Хранение переданных аргументов в отдельных переменных
В моем скрипте "script.sh" я хочу сохранить 1-й и 2-й аргумент для некоторой переменной, а затем сохранить остальные в другой отдельной переменной. Какую команду я должен использовать для реализации этой задачи? Обратите внимание, что количество аргументов, передаваемых скрипту, будет различным.
Когда я запускаю команду в консоли
./script.sh abc def ghi jkl mn o p qrs xxx #It can have any number of arguments
В этом случае я хочу, чтобы мой сценарий хранил "abc" и "def" в одной переменной. "ghi jkl mn o p qrs xxx" должен храниться в другой переменной.
3 ответа
Если вы просто хотите объединить аргументы:
#!/bin/sh
first_two="$1 $2" # Store the first two arguments
shift # Discard the first argument
shift # Discard the 2nd argument
remainder="$*" # Store the remaining arguments
Обратите внимание, что это разрушает исходные позиционные аргументы, и они не могут быть надежно восстановлены. Немного больше работы требуется, если это желательно:
#!/bin/sh
first_two="$1 $2" # Store the first two arguments
a="$1"; b="$2" # Store the first two argument separately
shift # Discard the first argument
shift # Discard the 2nd argument
remainder="$*" # Store the remaining arguments
set "$a" "$b" "$@" # Restore the positional arguments
Храните все аргументы в таблице
vars=("$@")
echo "${vars[10]}"