分页: 1 / 1
[Solved] 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 10:48
由 numbchild
execute_on_song_change = "notify 'ncmpcpp' '`ncmpcpp --now-playing`' "
这个是我在ncmpcpp播放器里的一条设置,但是得到的结果却是ncmpcpp ncmpcpp --now-playing 。
这里,最外面的引号是必须的,里面我希望用 ` ` 来执行命令,但是 ` ` 外面的 ' ' 似乎无法取全部的结果。( ncmpcpp --now-playing 的输出是 (3:44) 林俊杰 - 星球 )
notify 是我的一个脚本, 后面要跟两个变量, $1 $2. 这里$1是ncmpcpp $2则是ncmpcpp --now-playing的结果。
求解决办法。
Re: 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 10:49
由 eexpress
``的外面,别带' '了。
Re: 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 11:16
由 numbchild
eexpress 写了:``的外面,别带' '了。
因为$2带有空格还有其他的符号,比如(4:19) 许嵩 - 玫瑰花的葬礼。 所以要用shell的$@之类的。可是我不知道是哪个。
ee, 问一下,shell里引用全部是$@还是其他的? 我测试了$@不行。error(Invalid number of options.)
Re: 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 12:24
由 eexpress
那也试试转义\" \"。可能\' \' 也可以。
mocp里面,也使用onsongchange
execute_on_song_change = "notify 'ncmpcpp' \"`ncmpcpp --now-playing`\" "
execute_on_song_change = "notify 'ncmpcpp' \'`ncmpcpp --now-playing`\' "
你试试。
通常,你这接口,是提供给sh来跑的。通常要转义。
Re: 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 12:36
由 fnan
这样带空格的参数传进去也被分割,除非把空格换成字符串,脚本里再换成空格。
(或者直接使用环境变量)
Re: 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 12:50
由 numbchild
eexpress 写了:那也试试转义\" \"。可能\' \' 也可以。
mocp里面,也使用onsongchange
execute_on_song_change = "notify 'ncmpcpp' \"`ncmpcpp --now-playing`\" "
execute_on_song_change = "notify 'ncmpcpp' \'`ncmpcpp --now-playing`\' "
你试试。
通常,你这接口,是提供给sh来跑的。通常要转义。
恩,转义可以,\" 可以,但是\' 不行。
搞定了,谢谢ee和楼下哪位,楼下说的貌似很麻烦啊。。。
Re: [Solved] 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 13:06
由 fnan
以前尝试用变量传带空格参数都失败,转义有效?试试。
Re: [Solved] 在配置文件中,引号引用并且内嵌命令,
发表于 : 2011-07-19 14:00
由 fnan
c='1.sh "arg 1" "$(ls -C)"'
eval ~/$c
-2-
[arg 1]
[12345 arg2 ?b]
原来这样shell不用转义也可以,以前一直想不到。