2013-02-21 73 views
0
#!/bin/bash 

ret=`zenity --entry ` 

zenity --entry --text=$ret 

这里的第二条指令只打印字符串的第一个字。我如何获取可以包含空格的字符串?bash中的空格分隔参数

回答

2

利用该:

zenity --entry "--text=$ret" 

这应该呈现整个--text=thing with spaces in it作为单个参数。

当然,您的zenity可执行文件仍然必须能够处理其中有空格的参数,但这将是不同的问题。

通过举例的方式,请参见下面的脚本执行:

#!/bin/bash 
echo "[$1]" "[$2]" 

当你不使用和使用引号运行它,你会得到以下结果:

pax> ./testprog.sh two args 
[two] [args] 

pax> ./testprog.sh "one arg" 
[one arg] [] 
+0

RET ='zenity --entry “--text = $ RET”'。仍然不工作..我必须逃避双引号? – Kaunteya 2013-02-21 12:21:29

+0

@KaunteyaSuryawanshi:不,你为什么要改变_first_行(以'ret ='开头的行)?这被用来设置'ret'。更改_second_行,即_uses_'ret',您声明的那个行不起作用。 – paxdiablo 2013-02-21 12:22:41