Ответ 1
Как насчет:
for i in $(eval echo {$1..$2}); do echo $i; done
Это, наверное, хромой вопрос. Но я получаю 3 аргумента из командной строки [ bash script]. Затем я пытаюсь использовать их в цикле for.
for i in {$1..$2}
do action1
done
Это, похоже, не работает, и если $1
- "0"
, а $2
- 2
, он печатает {0..2}' and calls
action1` только один раз. Я ссылался на различные примеры, и это, по-видимому, правильное использование. Может кто-нибудь, пожалуйста, скажите мне, что здесь нужно исправить?
Спасибо заранее.
Как насчет:
for i in $(eval echo {$1..$2}); do echo $i; done
Вы можете нарезать вход с помощью ${@:3}
или ${@:3:8}
, а затем перебрать его
Например, для печати аргументов, начиная с 3
for i in ${@:3} ; do echo $i; done
или напечатать 8 аргументов, начиная с 3 (так, аргументы с 3 по 10)
for i in ${@:3:8} ; do echo $i; done
Используйте переменную [email protected]?
for i in [email protected]
do
echo $i
done
Если вы просто хотите использовать 1-й и 2-й аргументы, просто
for i in $1 $2
Если ваши $1 и $2 являются целыми числами, и вы хотите создать диапазон, используйте синтаксис C для цикла (bash)
for ((i=$1;i<=$2;i++))
do
...
done
У меня была аналогичная проблема. Я думаю, что проблема заключается в разыменовании $1 в скобках {} '. Следующая альтернатива работала для меня.
#!/bin/bash
for ((i=$1;i<=$2;i++))
do
...
done
Надеюсь, что это поможет.
#/bin/bash
for i
do
echo Value: $i
done
Это будет охватывать все аргументы, данные в файле script. Обратите внимание, что нет "делать" или что-либо еще после переменной цикла i.