我試圖構建一個bash腳本,該腳本在執行時從特定路徑獲取所有目錄並將它們顯示在Zenity列表窗口中。在該窗口中,用戶通過單選按鈕選擇目錄名稱並提交他的選擇。將包含空白的數組元素傳遞給Zenity窗口
首先,這是我的bash腳本:
projectTypes=(~/application1/Snippets/Project\ Type/*/)
radioStates=()
for index in "${!projectTypes[@]}"; do
if [[ "$index" = "0" ]]; then
folderName=$(basename "${projectTypes[$index]}")
projectTypes[$index]="$folderName"
radioStates[$index]=TRUE
else
folderName=$(basename "${projectTypes[$index]}")
projectTypes[$index]="$folderName"
radioStates[$index]=FALSE
fi
done
PROJTYPE=$(zenity \
--list --radiolist \
--title="Project Type" --text="Please select project type:" \
--column="Select" --column="Project Type" \
$(\
for index in "${!projectTypes[@]}"; do
printf "%s %s " "${radioStates[$index]}" "${projectTypes[$index]}"
done
) \
)
所以我想檢索所有目錄在「項目類型」文件夾中找到的名稱。裏面的「項目類型」文件夾中我有以下目錄:
~/application1/Snippets/Project Type/Angular 2/ ~/application1/Snippets/Project Type/PrestaShop/ ~/application1/Snippets/Project Type/WordPress/
現在我設法得到正確的目錄名作爲‘角2’,‘的Prestashop’和‘WordPress的’但我不能正確地將它們輸出到Zenity列表窗口。
Expected Output: SELECT | PROJECT TYPE --------------------- (*) | Angular 2 () | PrestaShop () | WordPress Current erroneous output: SELECT | PROJECT TYPE --------------------- (*) | Angular () | FALSE () | FALSE () |
Current erroneous output - Screenshot
我認爲這個問題是我試圖擴大數組元素的方式,但研究和反覆試驗了幾個小時之後,我一直無法確定如何我應該這樣做。
無論如何,我非常感謝任何幫助!
乾杯!
工作很精美,而且更具可讀性。謝謝! 我試圖避免在同一個數組(布爾和字符串)中有兩個_types_數據,所以這就是爲什麼我使用兩個數組。在解決方案中使用多種類型的數據填充數組是否常見? –
我不會說它是*標準的解決方案,但您的問題也不是我通常面對的問題。但是,所有數組條目都具有相同的類型,即* string *。 Bash支持[不同類型](https://linux.die.net/Bash-Beginners-Guide/sect_10_01.html),但沒有布爾類型。無論如何,大多數人只是堅持默認的字符串類型。 – Socowi