這是一個很難解釋。考慮變量all
,first
,last
,並some
:如何將用戶輸入解釋爲變量名稱?
a="apple mcintosh"
b="banana plantain"
c="coconut cashew"
all="$a $b $c"
first="$a"
last=$c"
some="$a $c"
以下是我有:
echo "What do you want to install?"
echo "all, first, last, or some?"
read userinput
假設用戶類型all
,他的投入,應作爲一個變量的名稱進行處理:我想要下一個命令是pacman -S $all
(相當於pacman -S apple mcintosh banana plantain coconut cashew
)。同樣,如果用戶鍵入first
和last
,則下一個命令必須是pacman -S $first $last
(實際上它應該執行pacman -S apple mcintosh coconut cashew
)。
我使用case/esac
將userinput
轉換爲變量,但我正在尋找更靈活和優雅的解決方案,因爲此方法不允許多個輸入。
case $userinput in
all) result="$all";;
first) result="$first";;
*) exit;;
esac
pacman -S $result
好的答案!我只寫了一個使用'eval'的函數,但是你的方法更加優雅,所以我放棄了我的答案。 – user1146332
它確實很優雅,但它仍然無法處理多個輸入。不過,很高興終於知道它是如何被調用的。 – octosquidopus
@octosquidopus已更新爲使用多字輸入:-) –