Ага, в 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 выполняет расширение фигурных скобок, как вы хотели:
Я использую CentOS 7 на жестком диске. По некоторым причинам я хочу переместить образ ОС с жесткого диска на новый SSD. (Использование SSD в качестве хранилища данных по некоторым причинам не вариант) Как я могу скопировать существующие ...
У меня есть эта переменная: toto = 123456, почему трогает "$ toto.hihi.log" работает и создает файл с именем 123456.hihi.log, но касание «$ totohihi.log» ничего не делает?
У меня есть потребность прилагается все перезаписываемые устройства хранения к данной машине, смонтированы ли они. Одурманенный способ сделать это должно было бы попробовать каждую запись в/dev, который соответствует...
ОБНОВЛЕНИЕ У меня были очень длинные строки в файле, и я помещал новую строку после каждого 80-го символа (я использовал команду sed для тот). Теперь программы работают нормально. Я могу рассчитать их время, и результаты имеют смысл. ...
У меня есть сценарий, который просит вход от пользователя. Когда я выполняю это локально, это делает то, что я хочу однако, я действительно хотел бы выполнить его по ssh. Я попробовал регулярные способы, которыми я запустил скрипт: ssh...
Я запускаю программу игрового сервера (SRCDS), которая полностью игнорирует SIGTERM. Единственный способ корректно завершить работу сервера — ввести «quit» в интерактивном режиме. Можно ли как-то обернуть эту программу...