【问题标题】:unix shell script unexpected errorUnix shell 脚本意外错误
【发布时间】:2017-09-01 13:01:41
【问题描述】:

当我运行以下脚本时

#!/bin/sh
[ `whoami` == root ] || echo "must be run as root" 

我收到以下错误

./test.sh: 2: [: root: unexpected operator

我怎样才能避免这个错误?

【问题讨论】:

  • [ `whoami` == "root" ] || echo "must be root"

标签: shell unix


【解决方案1】:

虽然问题似乎不在于引用单词root,但您的脚本在我的机器上运行时没有错误,即使没有引用它。因此,您的错误似乎取决于 shell 实现。

问题是sh是由不同环境下不同的shell实现的。 posix sh 命令不支持==(仅=),我认为这是您遇到的错误。参见例如this answer.

尝试将第一行更改为#!/bin/bash,看看您的机器上是否是这种情况。

【讨论】:

  • @draca,因为你使用的是[ 而不是[[,你想“引用所有的东西”,所以[ "$(whoami)" = root ]
  • @draca,如果答案正确,您能接受吗?谢谢
  • 在 dockerfile 中有这个问题,在 Alpine 上工作得很好,另一方面,ubuntu 不喜欢它!感谢您的回答;)
猜你喜欢
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多