我使用ubuntu,fluxbox,pcmanfm作为filemanager,xmms2作为音乐播放器。
我的目标:使用pcmanfm轻松地将歌曲添加到xmms2播放列表。
我有这个适用于单个文件的脚本:
path= $1 if [ -d "$path" ]; then #if directory xmms2 radd "$path" else if [ -e "$path" ]; then #if not directory, but file xmms2 add "$path" fi fi
我还希望能够添加一组文件
我的意思是选择所有这些然后 rigth-click - >打开 - > xmms2_add_script 的
我认为循环中的相同代码应该有效(如果pcmanfm传递的只是一个参数):
args=("$@") for path in $args; do if [ -d "$path" ]; then xmms2 radd "$path" else if [ -e "$path" ]; then xmms2 add "$path" fi fi done
但它不起作用。
(我知道运行 for 循环通过带有空格的文件名有问题,所以只尝试非空白文件。)
我尝试记录输出添加此
echo date >> /home/me/output.txt echo xmms2 radd "$path" >> /home/me/output.txtif 语句中的
。
当我尝试添加文件组时,似乎只调用了一次程序。
也许有人知道pcmanfm如何用一些程序打开多个文件?
(我想其他程序也是这样)
或者也许有人只知道如何用bash脚本实现我的目标?
以防万一:将项目添加到xmms2播放列表"xmms2 radd directory_name"
或"xmms2 add file_name"
我对bash只有基本的理解,如果答案不适用于expashienced bash程序员,那将会很好:)
答案 0 :(得分:2)
将for循环更改为:
for path in "${args[@]}"; do
for循环遍历其参数,你的args变量是一个数组,但bash只在你执行$ args时看到第一个元素。
Greg's Bash FAQ/Wiki: How can I use array variables?
这实际上是我如何写它以使其更具可读性:
for x in "$@"; do
[[ -d $x ]] && xmms2 radd "$x"
[[ -f $x ]] && xmms2 add "$x"
done