一个bash脚本重复相同的脚本操作,一遍又一遍地按回到终端,直到我按q

时间:2014-11-24 23:32:37

标签: bash shell unix terminal command-line-interface

当我点击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

1 个答案:

答案 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的兼容性。