#arrays #bash #email #unix
#массивы #bash #Адрес электронной почты #unix
Вопрос:
МОЯ цель — вызвать следующую команду:
(echo "test";uuencode testfile1.txt testfile1.txt;uuencode testfile2.txt testfile2.txt)|mail -s "subject" "recipient@domain.com"
вызов его в командной оболочке работает так, как ожидалось.
Однако я хотел бы сделать это, когда команды uuencode хранятся в массиве:
ARR=("uuencode testfile1.txt testfile1.txt" "uuencode testfile2.txt testfile2.txt")
Я пробовал следующее:
STR=$(IFS=';'; echo "${ARR[*]}");
(echo "test";"$STR")|mail -s "subject" "recipient@domain.com"
но я продолжаю получать следующую ошибку:
uuencode testfile1.txt testfile1.txt;uuencode testfile2.txt testfile2.txt: command not found
Как это исправить?
Я предполагаю, что он не распознает ;
как разделитель команд
Комментарии:
1. Хранить команды таким образом в корне неправильно. Можете ли вы привести более реалистичный пример нескольких команд, чтобы мы могли предложить лучшее решение?
Ответ №1:
Похоже, что вы сохраняете каждую команду в виде строки в массиве и объединяете их в строку большего размера. Вы можете сделать eval
в строке для выполнения.
(echo "test";eval "$STR")|mail -s "subject" "recipient@domain.com"