我的目标是调用以下命令:
(echo "test";uuencode testfile1.txt testfile1.txt;uuencode testfile2.txt testfile2.txt)|mail -s "subject" "recipient@domain.com"
在shell中调用它按预期工作。
但是,当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
如何解决这个问题?
我猜它没有将;
识别为命令分隔符
答案 0 :(得分:1)
看起来您将每个命令作为字符串存储在数组中并将它们连接成一个更大的字符串。您可以对要执行的字符串执行eval
。
(echo "test";eval "$STR")|mail -s "subject" "recipient@domain.com"