当我点击return直到我写q时,我想让这个脚本重复somescript.sh。我觉得我已经非常接近了,但如果它读成“q”,我就不能将$ actionLoop设置为0,我在这里做错了什么?
#!/bin/bash
$actionLoop = 1
while [ ${actionLoop} 1 ]
do
echo "do another random review script?"
sh /somescript.sh
echo "Done. Press q to quit."
read response
[ $response = "q" ] && $actionLoop = 0
done
答案 0 :(得分:1)
更改
$actionLoop = 1
到
actionLoop=1
同样,这一行
[ $response = "q" ] && $actionLoop = 0
到
[ $response = "q" ] && actionLoop=0
在分配变量时,您无法使用$
,也无法在作业周围使用空格。
IMO,你根本不需要那个变量。使用无限循环并在给出q
时将其分解。
while : ;
do
echo "do another random review script?"
sh /somescript.sh
echo "Done. Press q to quit."
read response
[[ "$response" = "q" ]] && break
done
我个人更喜欢使用bash内置[[
]]
而不是[
(测试)命令。有些人更喜欢[
与旧版shell的兼容性。