我正在尝试编写一个可以添加到任何命令的脚本。完成后,它将运行以下参数给出的命令,然后在命令完成时向用户发送电子邮件。
$PROG=$1 // Run program below $PROG $@ ECODE=$? echo -e 'Subject: `hostname`: $PROG finished\r\nTo: <$USER>\r\n\r\nExited with $ECODE\r\n' | sendmail $USER
这个工作大部分时间都是这样,但是在命令执行的参数中出现引用时,它们被剥离。例:
作品:
# notify-finished rsync -avz source/ user@remote:dest/
不行:
# notify-finished rsync -avz -e 'ssh -c blowfish' source/ user@remote:dest/
在第二种情况下,$ @扩展到rsync -avz -e ssh -c blowfish source user @ remote:dest /,缺少单引号。它也不适用于双引号。
使用:
$PROG "$@"
它将每个参数包含在“”中。