我正在尝试编写一个可以添加到任何命令的脚本。完成后,它将运行以下参数给出的命令,然后在命令完成时向用户发送电子邮件。
- $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 "$@"
它将每个参数包含在“”中。