2016-08-04 52 views
0

總之我想生產這種列表 enter image description here在命令行擴大變量

for file in * 
do 
    woC=$(sed -n -e 's#some-regex#\1#p' "$file") 
    idL=$(pcregrep -M '/some-regex/\1/p') 
    gridData="$gridData $file $wowC \"$idL\"" 
done 

假裝那有什麼$ WOC內,$ IDL並不重要。重要的是$ idL可能包含空格。

zenity --list \ 
    --title="NCR Service Requests" \ 
    --width=420 --height=500 \ 
    --column="File" --column="Wow Code" --column="ID list" \ 
    $gridData 

我無法弄清楚如何強制bash展開$的GridData(或$ IDL,我不知道問題究竟出)以這樣的方式,即空白被保留,但不同的領域保持獨立。

+1

如果'idL'需要將包含空白的參數(對'zenity')分開,那麼您需要使用一個數組(並且不能使用'pcregrep'來填充它,除非您有一種方法可以在shell中循環來分割它你想要的方式)。 –

回答

0

您可以使用xargs

xargs的讀取從標準輸入項目,用空格 或換行符(可以用雙引號或單引號或反斜槓被保護)界定,並執行該命令。 ..

你將建立參數的完整列表,並把它傳遞給zenity

#!/bin/bash 
gridData="\"a b\" \"c\" \"d\"" 
gridData="$gridData \"a\" \"b c\" \"d\"" 
gridData="$gridData \"a\" \"b\" \"c d\"" 

echo "--list 
--title=\"NCR Service Requests\" 
--width=420 --height=500 
--column=\"File\" 
--column=\"Wow Code\" 
--column=\"ID list\" $gridData" | xargs zenity 

exit 0