【问题标题】:Error command not found in case bash [duplicate]在 bash [重复] 的情况下找不到错误命令
【发布时间】:2016-03-16 18:31:32
【问题描述】:

我用case编写了bash脚本,当我按照./myscript.sh us-west-1d运行它时会导致错误

./myscript.sh: line 26:  : command not found
./myscript.sh: line 27:  : command not found
./myscript.sh: line 28:  : command not found
ami-fce3c696 us-east-1

但是,当我运行./myscript.sh us-west-1b时,它运行正常

谁能告诉我如何解决这个问题?

#! /bin/bash
AZ=$1
case $AZ in
      us-east-1b)
              SUBNET="subnet-2a3b5d47"
              SECURITY_GROUP=sg-f7d52998
              INVENTORY_GROUP=collector-use1
              WEIGHT=100
              AMI=ami-fce3c696
              REGION=us-east-1
              ;;
      us-east-1d)
              SUBNET="subnet-e6385e8b"
              SECURITY_GROUP=sg-f7d52998
              INVENTORY_GROUP=collector-use1
              WEIGHT=100
              AMI=ami-fce3c696
              REGION=us-east-1
              ;;
      us-east-1e)
              SUBNET="subnet-07395f6a"
              SECURITY_GROUP=sg-f7d52998
              INVENTORY_GROUP=collector-use1
              WEIGHT=100
              AMI=ami-fce3c696
              REGION=us-east-1
              ;;
esac
echo $SUBNET $SECURITY_GROUP $INVENTORY_GROUP $AMI $REGION

【问题讨论】:

  • 你拼错了esac
  • 哦,那是我的错字。但是,错误仍然是一样的
  • 我怀疑这是 stackoverflow.com/q/31885409/1126841 的副本:为什么正确的 shell 脚本会给出包装/截断/损坏的错误消息?。
  • 我相信我的问题和他的问题没有关系
  • 您发布的代码很好。请检查 DOS 行尾,因为它是唯一可以解释发布的代码如何产生与您报告的错误类似的错误

标签: linux bash shell


【解决方案1】:

我用tab 替换了我的所有行的space,结果证明它工作得很好。谢谢大家的帮助

【讨论】:

  • 制表符相当于我熟悉的每个 shell 中的空格。问题一定出在其他地方。
  • 也许它们是不间断的空格或其他一些 unicode 空格。 @Alexander,你用什么编辑器?
  • @glennjackman 你是对的。其他一些带有空格的代码,还有一些带有tab 的代码。所以,我用tab 替换了所有内容,结果对我来说效果很好
  • @glennjackman,我用的是 vim 编辑器,MAC 上已经可以使用了
  • 如果您仍有原始脚本(有错误),或者可以重新创建它,请使用od -cx 或十六进制编辑器查看它是否包含一些奇怪的字符。顺便说一句,当您发布此类问题时,其中提到了行号,您还应该指出第 26 行等在您的脚本中的位置。
猜你喜欢
  • 2013-03-22
  • 2018-12-10
  • 2017-05-22
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2017-02-23
  • 2012-06-06
相关资源
最近更新 更多