2009-01-31 61 views
1

我使用ubuntu,fluxbox,pcmanfm作爲filemanager,xmms2作爲音樂播放器。
我的目標是:用pcmanfm輕鬆地將歌曲添加到xmms2播放列表。pcmanfm爭論; bash

我有這個劇本,對單個文件的工作原理:

 
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 

我也希望有添加文件
我的意思是選擇所有這些組的能力,然後分辯單擊 - >開放 - > xmms2_add_script

我這吼聲中環相同的代碼應該工作(如果pcmanfm通過只是更然後一個參數):

 
args=("[email protected]") 
for path in $args; do 
    if [ -d "$path" ]; then 
     xmms2 radd "$path" 
    else 
     if [ -e "$path" ]; then 
      xmms2 add "$path" 
     fi 
    fi 
done 

但它不起作用。
(我知道有一些問題,通過與空格的文件名運行循環,所以嘗試了唯一的非whitespaced文件。)

如果試圖登錄電子輸出增加這個

 
echo date >> /home/me/output.txt 
echo xmms2 radd "$path" >> /home/me/output.txt 

聲明。 當我嘗試添加一組文件時,似乎程序僅被調用一次。


也許有人知道pcmanfm如何用一些程序打開多個文件?
(我想其他程序也是這麼做的)
或者,也許有人只是知道我該如何用bash腳本實現我的目標?

以防萬一:添加項目XMMS2播放列表"xmms2 radd directory_name""xmms2 add file_name"
我的bash的只有基本的瞭解,以便將是很好,如果答案不會爲expirienced bash的程序員:)

回答

2

更改您的循環到這一點:

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

for循環遍歷它的參數,你args變量是一個數組,但慶典只看到當你這樣做的$ args的第一要素。

Greg's Bash FAQ/Wiki: How can I use array variables?

其實,這是我會怎麼寫更可讀:

for x in "[email protected]"; do 
    [[ -d $x ]] && xmms2 radd "$x" 
    [[ -f $x ]] && xmms2 add "$x" 
done 
+0

我用你的方式:) 謝謝 – user15453 2009-01-31 20:42:49