Я пытаюсь передать все аргументы после --
через функцию.Прохождение через подпоследовательность аргументов bash функции
Вот пример вызова скрипта.
$ ./myscript.sh exec -- run "Hello World"
Arg 1 run
Arg 2 Hello World
Как можно модифицировать myscript.sh
(ниже) для требуемого выхода?
#! /bin/bash
f() {
echo Arg 1 "$1"
echo Arg 2 "$2"
}
ARGS=
CHILD_ARGS=
# Look to see if we want to pass args through to a script
for ((ARGS_POS=1 ; ARGS_POS <= $# ; ARGS_POS++)); do
if [[ "--" == ${!ARGS_POS} ]]; then
((ARGS_POS++))
CHILD_ARGS=${@:$ARGS_POS}
ARGS=${@:1:$((ARGS_POS-2))}
break
fi
done
# Do something $ARGS
# Run the child
f $CHILD_ARGS
Сохраняет ли это два пробела между «Hello» и «World»? –
Нет, если вам нужно место, вам нужно присвоить переменную $ 2 и $ 3, а затем распечатать ее. как var = "$ 2 $ 3"; echo «$ var» – Krishna
Ответ andlrc имеет то преимущество, что мне не нужно это делать, и он сохранит пробелы. Я просто хотел дать вам ту же возможность, что и он. Спасибо за вашу помощь снова! –