Обмен открытым ключом SSH

Ваша проблема заключается в использовании sh -c "..." , подробнее см. @ Ответ Жиля .

Более того, sh (см. POSIX sh ) не поддерживает массив (строго говоря, он имеет только один массив, $ @ ), вы необходимо вызвать другие оболочки в вашей системе, которые поддерживают такие массивы, как bash , zsh или ksh .

bash -c 'arr=(1 2 3 4 5);for var in "${arr[@]}";do echo "$var"; done'

Также обратите внимание, что вы ошиблись при выходе из $ {arr [@]} без кавычек, на самом деле вам нужно для переменной в "$ {arr [@]}" вместо. Вызов переменной без кавычек вызывает split + glob и является источником многих последствий для безопасности .

Чтобы поиграть с POSIX sh, вы можете использовать $ @ :

set -- 1 2 3 4 5
for var do
  printf '%s\n' "$var"
done

2
30.01.2018, 22:32
0 ответов

Теги

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