2017-09-01 112 views
1
當我運行下面的腳本

UNIX shell腳本意外錯誤

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

我收到以下錯誤

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

我怎樣才能避免這種錯誤?

+1

'[\'whoami \'==「root」] ||回聲「必須是根」# –

回答

5

儘管看起來問題並未引用root這個詞,但您的腳本在我的機器上運行時沒有錯誤,即使沒有引用它也是如此。所以看起來你的錯誤取決於shell的實現。

問題是sh是由不同環境下的不同shell實現的。 posix sh命令不支持==(僅限於=),我認爲這是您遇到的錯誤。見例如this answer

嘗試將第一行更改爲#!/bin/bash以查看您的機器是否屬於這種情況。

+0

是的,它應該是bash。謝謝! – draca

+1

@draca,因爲你使用'['不是'[[',你想'引用所有的東西',所以'[「$(whoami)」= root]' –

+0

@draca,你能接受回答是否正確?謝謝 – avivr