我有麻烦了:我的脚本没有按预期工作:)
我的部分代码:
readarray operations < operations.list
### lalala
for ((i=0; i<${#operations[@]}; i++)); do
echo "Perform ${operations[$i]}"
case ${operations[$i]} in
"dog rex" )
command1 & ;;
"cat sam" )
command2 & ;;
* )
command3 ;;
esac
done
操作列表文件看起来像
dog rex
cat sam
frog mike
monster jack
我期望命令1,命令2和命令3必须在后台执行,但事实并非如此。我做错了什么?
提前致谢,抱歉我的英语不好:)
答案1
它不起作用,因为数组的元素是狗\n 猫\n, 青蛙\n, 怪物\n.所以你的案件语句应为:
case ${operations[$i]} in
dog\n)
echo "Step dog" & wait ;;
cat\n)
echo "Step cat" & wait ;;
*)
echo "Step all else" & wait ;;
esac
严格来说,我认为忽略一个无辜的灵魂在每次输入后可能丢弃一两个空格的可能性是一个坏主意,因此我宁愿使用:
case ${operations[$i]} in
dog*)
echo "Step dog" & wait ;;
cat*)
echo "Step cat" & wait ;;
*)
echo "Step all else" & wait ;;
esac
但,YMMV。