Адрес char обрабатывается как строка с нулевым завершением и отображает содержимое этого адреса, что, вероятно, не определено, но в этом случае пустая строка. Если вы нажмете указатели на void *
, вы получите желаемые результаты.
Разница между something2 и чем-то состоящим из 8 должна быть выровнена и способность компилятора решить для себя, где в стеке переменные объявлены.
В Linux нельзя передавать более одного аргумента через строку shebang. Все аргументы будут переданы в виде одной строки в исполняемый файл:
#!/bin/foo -a -b -c
передаст одну опцию «-a -b -c» в /bin/foo
плюс содержимое файла. Например, если бы вы позвонили:
/bin/foo '-a -b -c' contents-of-file.txt
В наше время поведение должно быть одинаковым на большинстве производных Unix, но оно может отличаться, я не проверял их все:)
Трудно найти подходящую документацию для этого, лучшее, что я смог быстро найти, это: https://www.in-ulm.de/~mascheck/various/shebang/#splitting
#!/bin/bash
exec kotlin --arg1 --arg2 ... /path/to/kotlin-script
Проверьте версию coreutils:
apt-cache policy coreutils
Начиная с coreutils 8.30, вы сможете использовать:
#!/usr/bin/env -S command arg1 arg2 ...
Вы можете обновить свои coreutils
.