如何通过执行错误的shell命令来恢复?

时间:2016-07-21 09:04:09

标签: linux shell git-bash

我在win7 64bit中使用Git Bash 2.9.0-64位。 这是我的shell代码

function sum1_x(){
a=$1
while [ $a -ge 1 ]; do
    sum=$[$sum + $a]
    a=$[$a - 1]
done

echo $sum
}

sum $1

在Git Bash中,我的类型历史记录如下:

  

wen @ PC-WEN MINGW64 / d / git /(dev)
  $ sh sum1_x.sh
  退出
  :q

     

退出
  退出()
  出口()

输入sh sum1_x.sh之后,我再也无法执行任何shell命令了。我尝试了很多命令。我知道我的脚本中有bug,但是我怎样才能回到执行面向这种类型的shell脚本问题?我现在无能为力。

2 个答案:

答案 0 :(得分:1)

您的脚本有几个问题:

  1. 您有sum1_x功能,但您正在呼叫sum $1
  2. 你没有检查输入值是否存在,因为你陷入无限循环
  3. 这是更正后的脚本,检查输入参数是否存在:

    function sum1_x(){
    a=$1
    while [ $a -ge 1 ]; do
      sum=$[$sum + $a]
      a=$[$a - 1]
    done
    
    echo $sum
    }
    
    if [ -z "$1" ]; then  # check that input parameter is exists
    echo "No input"
    else
    sum1_x $1
    fi
    

    如何停止程序:

    1. Ctrl + 'c'
    2. 通过pid打开新的mingw并找到progrman的ps -aux | grep "sum1_x.sh" 然后使用kill pid来杀死程序

答案 1 :(得分:0)

如问题中所示,shell脚本包含许多错误。命令sh sum1_x.sh也是错误的。它应该被命令sh sum1_x.sh 9或类似的东西替换。我修复了这些错误后,它运行没有问题,打印正确的总和。

但我仍然不知道如何购买shell脚本。幸运的是,我偶然点击了Ctrl& c,我可以再次输入shell命令。