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的结果。
求解决办法。
[Solved] 在配置文件中,引号引用并且内嵌命令,
- numbchild
- 帖子: 107
- 注册时间: 2010-03-16 12:34
[Solved] 在配置文件中,引号引用并且内嵌命令,
上次由 numbchild 在 2011-07-19 12:52,总共编辑 1 次。
My Blog: http://stardiviner.tumblr.com/
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- numbchild
- 帖子: 107
- 注册时间: 2010-03-16 12:34
Re: 在配置文件中,引号引用并且内嵌命令,
因为$2带有空格还有其他的符号,比如(4:19) 许嵩 - 玫瑰花的葬礼。 所以要用shell的$@之类的。可是我不知道是哪个。eexpress 写了:``的外面,别带' '了。
ee, 问一下,shell里引用全部是$@还是其他的? 我测试了$@不行。error(Invalid number of options.)
My Blog: http://stardiviner.tumblr.com/
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 在配置文件中,引号引用并且内嵌命令,
那也试试转义\" \"。可能\' \' 也可以。
mocp里面,也使用onsongchange
execute_on_song_change = "notify 'ncmpcpp' \"`ncmpcpp --now-playing`\" "
execute_on_song_change = "notify 'ncmpcpp' \'`ncmpcpp --now-playing`\' "
你试试。
通常,你这接口,是提供给sh来跑的。通常要转义。
mocp里面,也使用onsongchange
execute_on_song_change = "notify 'ncmpcpp' \"`ncmpcpp --now-playing`\" "
execute_on_song_change = "notify 'ncmpcpp' \'`ncmpcpp --now-playing`\' "
你试试。
通常,你这接口,是提供给sh来跑的。通常要转义。
● 鸣学
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 在配置文件中,引号引用并且内嵌命令,
这样带空格的参数传进去也被分割,除非把空格换成字符串,脚本里再换成空格。
(或者直接使用环境变量)
(或者直接使用环境变量)
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- numbchild
- 帖子: 107
- 注册时间: 2010-03-16 12:34
Re: 在配置文件中,引号引用并且内嵌命令,
恩,转义可以,\" 可以,但是\' 不行。eexpress 写了:那也试试转义\" \"。可能\' \' 也可以。
mocp里面,也使用onsongchange
execute_on_song_change = "notify 'ncmpcpp' \"`ncmpcpp --now-playing`\" "
execute_on_song_change = "notify 'ncmpcpp' \'`ncmpcpp --now-playing`\' "
你试试。
通常,你这接口,是提供给sh来跑的。通常要转义。
搞定了,谢谢ee和楼下哪位,楼下说的貌似很麻烦啊。。。
My Blog: http://stardiviner.tumblr.com/
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: [Solved] 在配置文件中,引号引用并且内嵌命令,
c='1.sh "arg 1" "$(ls -C)"'
eval ~/$c
-2-
[arg 1]
[12345 arg2 ?b]
原来这样shell不用转义也可以,以前一直想不到。
eval ~/$c
-2-
[arg 1]
[12345 arg2 ?b]
原来这样shell不用转义也可以,以前一直想不到。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。