获取发送到shell执行的整个字符串

时间:2010-03-16 08:40:34

标签: bash

我有一个看起来像这样的bash脚本(名为job_result.sh):

#!/bin/bash
$* && zenity --title "Job result" --info --text "SUCSESS: Job '$*'completed" && while pidof zenity > /dev/null; do /usr/bin/wmctrl -a "Job Result" && sleep 2; done

当我用:

执行时
$ ./job_result.sh echo "arf" && sleep 10

我希望发生以下情况:

$ echo "arf" && sleep 10 && zenity --title "Job result" --info --text "SUCSESS: Job '$*'completed" && while pidof zenity > /dev/null; do /usr/bin/wmctrl -a "Job Result" && sleep 2; done

但似乎发生了以下情况:

$ echo "arf" && zenity --title "Job result" --info --text "SUCSESS: Job '$*'completed" && while pidof zenity > /dev/null; do /usr/bin/wmctrl -a "Job Result" && sleep 2; done

问题:我如何掌握整个shell参数?而不只是直到&&?

的部分

1 个答案:

答案 0 :(得分:1)

尝试加上引号

$ ./job_result.sh "echo 'arf' && sleep 10"

这是猜测你想要什么,可以做什么

将您的参数放在另一个文件的变量中。然后当你想使用它时,请输入文件,例如

$ cat my_shell_libraries
export var="echo 'arf' && sleep 10"
$ . my_shell_libraries
$ ./job_result.sh $var