比方說,我有一個MySQL表animals
的列id, name
3行:使用MySQL輸出爲BASH函數輸入循環
1, Mountain Goat
2, Angry Chicken
3, Weird Llama
如果我運行命令animals=$(mysql -u root -e 'SELECT name FROM animals')
,我得到的結果Mountain Goat Angry Chicken Weird Llama
。
如果我硬編碼的動物進入陣列animals=("Mountain Goat" "Angry Chicken" "Weird Llama")
,然後嘗試用命令echo ${animals[1]}
訪問數組的第二個條目,我得到的輸出Angry
,而不是「憤怒的小雞」。
最終我想要的是將每個值animals.name
傳遞給BASH中的函數。請參閱下面的示例腳本。
#!/bin/bash
animals=$(mysql -u root -e 'SELECT name FROM animals')
function showAnimal {
echo "Wow, look at the "$1"!";
}
for i in $animals; do
showAnimal ${animals[$i]}
done
showAnimal
,並得到以下結果:
Wow, look at the Mountain Goat!
Wow, look at the Angry Chicken!
Wow, look at the Weird Llama!