下面的脚本应该打开一个输入框,它的初始entry-text是$filename
的值,但是第三行的zenity部分忽略了这个变量,所以最后没有entry-text。
顺便说一下,如果我只是用whoami
代替filename
,我的用户名将如预期的那样出现。我不能得到一个结果使用我自己的变量,虽然。
#!/bin/bash
filename="duck"
sh -c 'chromium-browser "https://duckduckgo.com/?q=%5C$(zenity --entry --text "I am feeling ducky" --entry-text $(filename))"'
如果我删除sh -c
的东西,以下面的代码结束,我的变量将与zenity一起工作。
#!/bin/bash
filename="duck"
zenity --entry --text "I am feeling ducky" --entry-text $filename
有线索知道为什么吗?我尝试了不同的组合,但我的努力是徒劳的。
符号$(filename)
运行命令'filename'
展开变量,使用${filename}
。
还要注意,除非$filename
是一个导出的变量,否则子shell(运行-c
选项的那个)将看不到变量的值(因为有单引号)。
要解决这个问题,您必须使用双引号-相当小心:
#!/bin/bash
filename="duck"
sh -c "chromium-browser "https://duckduckgo.com/?q=%5C$(zenity --entry --text "I am feeling ducky" --entry-text ${filename})""