unix shell脚本意外错误

dra*_*aca 1 unix shell

当我运行以下脚本时

#!/bin/sh
[ `whoami` == root ] || echo "must be run as root" 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

./test.sh: 2: [: root: unexpected operator
Run Code Online (Sandbox Code Playgroud)

我该如何避免这个错误?

avi*_*ivr 6

虽然看起来问题似乎没有引用这个词root,但是你的脚本在我的机器上运行时没有错误,即使没有引用它.所以看起来你的错误取决于shell的实现.

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

尝试更改第一行以#!/bin/bash查看您的计算机上是否存在这种情况.