1

我使用 ubuntu、fluxbox、pcmanfm 作为文件管理器,xmms2 作为音乐播放器。
我的目标:使用 pcmanfm 轻松将歌曲添加到 xmms2 播放列表。

我有这个适用于单个文件的脚本:

路径= $1
如果 [ -d "$path" ]; 然后 #if 目录
    xmms2 radd "$path"
别的
    如果 [ -e "$path" ]; 然后 #if 不是目录,而是文件
        xmms2 添加“$路径”
    菲
菲

我还希望能够添加文件组,
我的意思是选择所有文件,然后右击 -> 打开方式 -> xmms2_add_script

我认为循环中的相同代码应该可以工作(如果 pcmanfm 只传递一个以上的参数):

args=("$@")
$args 中的路径;做
    如果 [ -d "$path" ]; 然后
        xmms2 radd "$path"
    别的
        如果 [ -e "$path" ]; 然后
            xmms2 添加“$路径”
        菲
    菲
完毕

但它不起作用。
(我知道通过带有空格的文件名循环运行存在一些问题所以只尝试了非空格文件。)

我尝试记录输出添加这个

回显日期 >> /home/me/output.txt
echo xmms2 radd "$path" >> /home/me/output.txt

if语句中。当我尝试添加文件组时,似乎只调用了一次程序。


也许有人知道 pcmanfm 如何使用某些程序打开多个文件?
(我猜其他程序也是这样做的)
或者也许有人知道我怎样才能用 bash 脚本实现我的目标?

以防万一:将项目添加到 xmms2 播放列表"xmms2 radd directory_name",或者"xmms2 add file_name"
我对 bash 只有基本的了解,所以如果有经验的 bash 程序员没有答案,那就太好了:)

4

1 回答 1

2

将您的 for 循环更改为:

for path in "${args[@]}"; do

for 循环遍历它的参数,你的 args 变量是一个数组,但是当你执行 $args 时,bash 只看到第一个元素。

Greg 的 Bash 常见问题解答/Wiki:如何使用数组变量?

这实际上是我将如何编写它以使其更具可读性:

for x in "$@"; do
    [[ -d $x ]] && xmms2 radd "$x"
    [[ -f $x ]] && xmms2 add  "$x"
done
于 2009-01-31T16:54:08.147 回答