Страница пользователя для bash говорит, что касается опции -c:
-c string
Если присутствует опция-c
, тогда команды считываются изstring
. Если есть аргументы после строки, они назначаются позиционные параметры, начиная с$0
.
Поэтому, учитывая это описание, я думаю, что что-то вроде этого должно работать:
bash -c "echo arg 0: $0, arg 1: $1" arg1
но вывод просто показывает следующее, поэтому он выглядит так, как аргументы после строки -c
не назначаются позиционным параметрам.
arg 0: -bash, arg 1:
Я запускаю довольно древний bash (на Fedora 4):
[root @dd42 trunk] # bash --version
GNU bash, версия 3.00.16 (1) -release (i386-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
То, что я действительно пытаюсь сделать здесь, - это выполнить бит оболочки script с аргументами. Я думал, что -c
выглядит очень многообещающим, следовательно, проблема выше. Я задавался вопросом об использовании eval, но я не думаю, что могу передать аргументы тому, что следует за eval. Я также открыт для других предложений.