一个bash脚本,反复按终端中的return键重复相同的脚本操作,直到我按q键

一个bash脚本,反复按终端中的return键重复相同的脚本操作,直到我按q键,bash,shell,unix,terminal,command-line-interface,Bash,Shell,Unix,Terminal,Command Line Interface,我想让这个脚本在我单击return时重复somescript.sh,直到我写q为止。我想我已经非常接近了,但是如果它读到“q”,我不能将$actionLoop设置为0,我在这里做错了什么 #!/bin/bash $actionLoop = 1 while [ ${actionLoop} 1 ] do echo "do another random review script?" sh /somescript.sh echo

我想让这个脚本在我单击return时重复somescript.sh,直到我写q为止。我想我已经非常接近了,但是如果它读到“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
改变

$actionLoop = 1

同样,这条线

    [ $response = "q" ] && $actionLoop = 0

赋值变量时不能使用
$
,赋值周围也不能有空格


依我看,你根本不需要那个变量。使用无限循环,并在给定
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内置的
[[
]]
而不是
[
(test)命令。有些人更喜欢
[
以兼容较旧的shell。

变量声明/赋值不能以$开头,并且之间没有空格=
    [ $response = "q" ] && actionLoop=0
while : ;
    do
        echo "do another random review script?"
        sh /somescript.sh
        echo "Done.  Press q to quit."
        read response
        [[ "$response" = "q" ]] && break
    done