Шебанг под Linux не разделяет аргументы

Адрес char обрабатывается как строка с нулевым завершением и отображает содержимое этого адреса, что, вероятно, не определено, но в этом случае пустая строка. Если вы нажмете указатели на void *, вы получите желаемые результаты.

Разница между something2 и чем-то состоящим из 8 должна быть выровнена и способность компилятора решить для себя, где в стеке переменные объявлены.

2
задан Amorphous 26 February 2019 в 09:43
поделиться

2 ответа

В 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


[119 В качестве обходного пути вы обычно создаете оболочку оболочки:

#!/bin/bash
exec kotlin --arg1 --arg2 ... /path/to/kotlin-script
0
ответ дан hek2mgl 26 February 2019 в 09:43
поделиться

Проверьте версию coreutils:

apt-cache policy coreutils

Начиная с coreutils 8.30, вы сможете использовать:

#!/usr/bin/env -S command arg1 arg2 ...

Вы можете обновить свои coreutils

.
0
ответ дан Agapa 26 February 2019 в 09:43
поделиться