$times=$1
ssh -A vyas@subdom.dom.net <<- EOF
for i in {1..$times}
do
echo 'Iteration' $i
url='vyas@app'
echo 'Connecting to' $url
done
EOF
Оба оператора echo выводят пробелы для имени переменной:
Итерация Подключение к
$times=$1
ssh -A vyas@subdom.dom.net <<- \EOF
for i in {1..$times}
do
echo 'Iteration' $i
url='vyas@app'
echo 'Connecting to' $url
done
EOF
Выход:
Итерация {1…} Подключение к vyas @ app
Я выполняю вышеуказанные сценарии с помощью ./rt.sh (./rt.sh 5). Как мне получить значение $ i, чтобы прочитать 1 .. $ раз?
Оболочка выполняет расширение фигурной скобки перед подстановкой переменных, таким образом, конструкция for i in {1..$x}
не может работать, как Вы ожидаете.
, Так как Вы хотите передать в переменной, Вы не можете выйти из heredoc разделителя, таким образом, необходимо работать для защиты всех переменных, Вы не хотите расширенный
times=$1 # no "$" on the left-hand side!
ssh -A vyas@subdom.dom.net <<- EOF
for i in \$(seq $times)
do
echo Iteration \$i
url='vyas@app'
echo 'Connecting to' \$url
done
EOF