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

前端之家收集整理的这篇文章主要介绍了传递给孩子的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 "$@"

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

猜你在找的Bash相关文章