linux – 使用单引号扩展bash变量的问题
发布时间:2020-12-14 02:48:09 所属栏目:Linux 来源:网络整理
导读:我有一个我这样构建的变量: ATTSTR=""for file in $LOCALDIR/*.pdfdo ATTSTR="${ATTSTR} -a "${file}""done 该变量现在包含(注意文件名中的空格): ATTSTR=' -a "/tmp/Testpage - PDFCreator.pdf"' 现在我想在这样的命令中使用这个变量: mutt -s "Subjec
我有一个我这样构建的变量:
ATTSTR="" for file in $LOCALDIR/*.pdf do ATTSTR="${ATTSTR} -a "${file}"" done 该变量现在包含(注意文件名中的空格): ATTSTR=' -a "/tmp/Testpage - PDFCreator.pdf"' 现在我想在这样的命令中使用这个变量: mutt -s "Subject" "${ATTSTR}" recipient@example.ec 但事实证明它会像这样扩展,因此命令失败(注意扩展变量周围添加的单引号): mutt -s "Subject" ' -a "/tmp/Testpage - PDFCreator.pdf"' recipient@example.ec 我希望我的变量扩展而没有单引号,使用“$ATTSTR”或$ATTSTR更糟糕. 解决方法
众所周知,文件名在扩展字符串中是不可靠的;抵制这种诱惑.
而是使用数组来保持文件名不变,无论任何空格如何: arr=() for f in $somedir/*.pdf do arr+=( -a "$f") done # and for usage/display: mutt -s mysubject "${a[@]}" some@body 请参阅Bash Guide on Arrays以供参考. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |