如何解决带空格的 CSH 变量在传递给另一个脚本时会中断
我将一个变量(单引号内有空格)作为参数传递给另一个 csh 脚本,但它在第二个脚本中将它们分开。如果我在 tcsh 中手动运行同一行,它会起作用。
spacetest.csh:
#!/bin/csh -vx
set SERVER = "UAT"
set SUBJECT = "'Test Report $SERVER'"
set MESSAGE = "testmessage.msg"
set ATTACHMENTS = "'-a file1.csv -a file2.csv'"
emailtest.csh $SUBJECT $MESSAGE $ATTACHMENTS
emailtest.csh:
#!/bin/csh
echo "1 $1"
echo "2 $2"
echo "3 $3"
因为我使用了 -vx,它显示了参数的样子,但它仍然将它们分开。
输出包括:
/scratch/hr-finance/scripts/emailtest.csh $SUBJECT $MESSAGE $ATTACHMENTS
/scratch/hr-finance/scripts/emailtest.csh 'Test Report UAT' testmessage.msg '-a file1.csv -a file2.csv'
1 'Test
2 Report
3 UAT'
现在,如果我复制并粘贴该行并在 tcsh 中运行它,它会按预期工作。
%emailtest.csh 'Test Report UAT' testmessage.msg '-a file1.csv -a file2.csv'
1 Test Report UAT
2 testmessage.msg
3 -a file1.csv -a file2.csv
%
如果我尝试用 \"
代替,我会收到一个不匹配的双引号错误:
%set SUBJECT = "\"Test Report $SERVER\""
Unmatched ".
有什么想法吗?
解决方法
修复是使用“eval”。
eval /scratch/hr-finance/scripts/CM_MAIL.csh $SUBJECT $MESSAGE $ATTACHMENTS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。