一个bash脚本重复相同的脚本动作,一遍又一遍地按下终端中的返回键,直到我按q键

问题描述:

我想让这个脚本重复somescript.sh,当我点击返回,直到我写q。我想我已经非常接近了,但是如果它读“q”,我不能让$ actionLoop设置为0,我在这里做错了什么?一个bash脚本重复相同的脚本动作,一遍又一遍地按下终端中的返回键,直到我按q键

#!/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

变量声明/赋值不能以$开头,并且在= – DRC 2014-11-24 23:36:21

变化

$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内置[[]]而不是[(测试)命令。有些人更喜欢[以与旧壳体兼容。