Для чего нужен аргумент name для sh -c?

wget -O - <url> средства, что wget загрузит URL и распечатает файл к STDOUT, следовательно мусор в Вашем терминале. Полные каналы команды, которые производят к tar xzf извлечь и (по-видимому) произвести полезные файлы.

4
07.05.2018, 18:00
2 ответа

Справочная страница Linux была немного подробно описана.

sh -c [-aCefnuvxIimqVEb] [+ aCefnuvxIimqVEb] [-o имя_параметра] [+ o имя_параметра] строка_команды [имя_команды [аргумент ...]]

-c Прочитать команды из операнд command_string вместо стандартного ввода. Специальный параметр 0 будет установлен из операнда command_name, а позиционные параметры ($ 1, $ 2 и т. Д.) Будут установлены из оставшихся операндов аргумента .

command_name Строка, присвоенная специальному параметру 0 при выполнении команд в command_string. Если command_name не указано, специальный параметр 0 должен быть установлен равным значению первого аргумента , переданного sh от его родителя (например, argv [0] для программы C), { {1}}, который обычно представляет собой путь, используемый для выполнения утилиты sh.

5
27.01.2020, 20:48

Форма:

sh -c '...' name arg1 arg2 ...

называется встроенным скриптом, часто встречается в сочетании с find ... -exec sh -c '...' find-sh {} + . Внутри встроенного скрипта для $ 0 будет установлено значение name , а остальные аргументы были заполнены как $ @ .

В общем, вы должны установить для него что-то значимое, потому что оно будет использоваться, например, для отображения сообщений об ошибках:

sh -c 'echo "${1?}"' foo
foo: 1: foo: 1: parameter not set

Но вы можете установить name на любое слово, которое вам нравится, чтобы указать имя встроенный скрипт:

sh -c 'printf "%s\n" "$0"' custom-sh 1 2 3
custom-sh

Это поведение определяется POSIX .

5
27.01.2020, 20:48

Теги

Похожие вопросы