Как мне получить доступ к установке Linux на неизвестном и, казалось бы, заблокированном устройстве?

Ага, в Bash раскрытие фигурных скобок выполняется в первую очередь перед раскрытием переменных. Это означает, что это не работает так, как вы хотите:

$ a=1; b=5; echo {$a..$b}
{1..5}

(Сначала фигурные скобки раскрываются, давая {$ a .. $ b} , затем переменные, давая {1 .. 5} .)

Но вы можете сделать это (если вы когда-нибудь придумали ему применение):

$ aa=123;ab=456; echo $a{a,b}
123 456

Использование eval работает, поскольку оно вызывает дополнительный проход оценки, но это обычно не очень хорошая идея, так как она будет оценивать, например, расширения команд и другие расширения из имен файлов, содержащих знаки $ , что обычно не то, что вам нужно.

Если у вас есть числовой диапазон, как здесь, вы можете использовать цикл:

S=1;E=3;
for (( i=$S; i <= $E; i++ )) ; do 
     echo $i
done

или:

while [ $S -le $E ] ; do 
    echo $S 
    S=$[ $S + 1] 
done 

Кроме того, zsh выполняет расширение фигурных скобок, как вы хотели:

$ zsh -c 'a=1; b=5; echo {$a..$b}'
1 2 3 4 5
2
27.09.2017, 22:18
0 ответов

Теги

Похожие вопросы