我正在編寫腳本,以便使用本地計算機中的開發網站執行一系列操作。這個想法是在「/ var/www /」中列出所有文件夾(網站),並讓用戶選擇一個來執行後續操作。我發現這個腳本的一些靈感here。查找目錄中的文件夾,然後將它們列爲bash腳本中的選項
我剛開始學的bash,所以不要指望褻瀆代碼:
這是我堅持:
#!/bin/bash
cd /var/www
options=($(find . -maxdepth 1 -type d -printf '%P\n'))
options[$[${#options[@]}+1]]="type a new site"
title="Website developing script"
prompt="Choose the site:"
echo "$title"
PS3="$prompt "
select opt in "${options[@]}" "Quit"; do
case "$REPLY" in
# so far so good, all folders are properly listed as options
# the answer, I guess, is placing a loop here in order to change this
# example line into a list of options, but I can't figure out how
1) echo "You picked $opt which is option $REPLY";;
$((${#options[@]}+1))) echo "Exiting"; break;;
*) echo "Invalid option. Try another one.";continue;;
esac
done
任何提示是最歡迎的。提前致謝。
不推薦使用'$ []'作爲算術。改用'(())'。然而,一個數組下標已經是一個算術上下文,所以:'options [$ {#options [@]} + 1] =「鍵入一個新的站點」,**但是**你可以追加到一個數組而不需要增加一個索引,所以:'options + =(「鍵入一個新的站點」)' –