传递给孩子的Bash参数($@或$*)

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

它将每个参数包含在“”中。

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...