Так не работает:
Код: Выделить всё
num=4
var${num}=value
echo $var4
var4=value: not found
Код: Выделить всё
num=4
var${num}=value
echo $var4
var4=value: not found
Код: Выделить всё
num=4
value=var${num}
echo $value
Код: Выделить всё
num=4
setvar var${num} value
echo $var4
Код: Выделить всё
num=4
eval "var${num}=value"
echo $var4
Код: Выделить всё
# cat nums
1
2
3
4
5
6
7
8
9
Код: Выделить всё
# cat test.sh
nums=`cat nums`
for i in $nums
do
setvar var${i} value
echo $var${i}
done
Код: Выделить всё
# ./test.sh
1
2
3
4
5
6
7
8
9
)))zg писал(а):Код: Выделить всё
num=4 setvar var${num} value echo $var4
Код: Выделить всё
num=4 eval "var${num}=value" echo $var4
+1lissyara писал(а):писать, лучше на шелле.
иначе однажды попадёте в контору где на серверах только sh, и требование скрипты писать тока на sh
вот тогда и вспомните мои слова, выкидывая ваши поделия нарисованные на экзотике
и? ты еще никогда не сталкивался с тем, что на разных системах /bin/sh разный. Например, в солярке есть ksh93 и собственный убогий sh[1], кой posix почти не поддерживает (например, ${parameter##word}). Какой мне выбирать?lissyara писал(а):иначе однажды попадёте в контору где на серверах только sh, и требование скрипты писать тока на sh
переносимость плохая только у /bin/sh. Потому что никто тольком не знает, что такое стандартный shell. У одних это - POSIX shell, у других - ash или dash, у третьих модификация ash (FreeBSD), у четвертых - симлинк на другой shell с совместимостью (ksh, bash, zsh).paix писал(а):Что-то более сложное нужно писать на скриптовых языках (аля perl\python).
Переносимость у них гораздо больше.
Гость писал(а):переносимость плохая только у /bin/sh. Потому что никто тольком не знает, что такое стандартный shell. У одних это - POSIX shell, у других - ash или dash, у третьих модификация ash (FreeBSD), у четвертых - симлинк на другой shell с совместимостью (ksh, bash, zsh).paix писал(а):Что-то более сложное нужно писать на скриптовых языках (аля perl\python).
Переносимость у них гораздо больше.
Именно по этой причине я утверждаю, что переносимость shell-скриптов низкая.Гость писал(а): Проблемы могут начаться далее, когда используются невстроенные команды/функции. Например, программа cp(1) может иметь NetBSD расширение (ключик `-a') или GNU расширение (ключик `-d').