Я хочу передать много аргументов сценарию оболочки, который не знает, сколько аргументов они будут, и я хочу обработать их. Я сделал следующий код:Прокрутите массив аргументов, не зная, сколько аргументов в сценарии оболочки?
int=$1
src=$2
r=$3
string=$4
duration=$5
./start.sh $int $r $src "$string"
sleep $duration
shift; shift; shift; shift; shift
while [ $# -gt 2 ]
do
r=$1
string=$2
duration=$3
./change.sh $int $r "$string"
sleep $duration
shift; shift; shift
done
Это работает, но только один раз, теперь я хочу этот скрипт для запуска все время, я имею в виду, используя while 1
, но это не будет работать так, потому что список аргументов пуст в конце этого кода!
Есть ли способ сделать что-то вроде следующего «псевдо-код» в скриптах:
for(i=0 ; i<arguments.count; i++){
//do something with arguments[i]
}
или скопировать массив аргументов в другой массив, так что я могу использовать его в дальнейшем, как я хочу. Я имею в виду, могу ли я скопировать $*
или [email protected]
или arg
в другой массив?
Любая помощь очень ценится.
Могу ли я использовать что-то вроде '$ arg [i]'? – Reem
Да, '' $ {arg [$ i]} "' (обратите внимание на кавычки и фигурные скобки). – Philipp
'i = 1; echo "$ {arg [$ i]}" ' ничего не напечатал :( – Reem