У меня есть строка, представляющая список файлов, разделенных пробелами. Например:
file1 file2 file3
Я получаю это в результате выполнения команды ftp ls, вывод команды представляет собой список файлов.
Он сохраняется в переменной $CONTENT.
.
Мне нужно разделить переменную на массив.
Я пробовал:
echo "good count.."
Files=($CONTENT)
set -A STRING "$CONTENT"
for x in $STRING; do
echo "THIS FILE IS TO BE DOWNLOADED: $x"
done
в командной строке это работает отлично.
В исполняемом файле .sh я получаю сообщение об ошибке: set: -A: invalid option, за которым следует стандартная версия «как использовать команду set».
Как мне с этим работать? Спасибо!
Если команда работает нормально в командной строке, но не работает в сценарии оболочки, убедитесь, что вы используете одну и ту же оболочку для обоих.
Похоже, вы используете bash для своей интерактивной оболочки, а ksh для сценария.
Разве простой l = "a b c"; for x in $l; do echo $x; done; не делает то, что вы хотите? Нет необходимости в массиве, пробелов должно хватить, если вы не укажете переменную списка (for x in "$l"... - это рассматривается как единое целое).
Разве Files не тот массив, который вам нужен?
На самом деле, я понял это задом наперед. set -A - это синтаксис ksh, но он не работает в bash. Итак, вы запускаете сценарий с bash. Измените строку #!, указав путь к ksh.
Также не помещайте $CONTENT в кавычки, это предотвратит его разбиение.
ух ты. это должно быть рекордное время отклика. Большое спасибо всем. изменение на ksh в скрипте сработало!





bashиksh- разные оболочки. Используйте только тег, соответствующий вашей оболочке.