2011-12-05 95 views
0

我把代碼寫在一個sh文件並運行它...bash腳本不工作的權限設置爲一個文件

die() { 
    echo >&2 "[email protected]" 
    exit 1 
} 


[ "$#" -eq 2 ] || die "2 argument required, $# provided" 
echo $2 | grep -E -q '^[0-9]+$' || die "Numeric argument required, $2 provided" 


nfile_location = /home/virtual/$1 

if [ -f $nfile_location ]; 
then 
    chmod -R $2 $nfile_location 
    echo "Set permission"; 
    exit 1; 
else 
    echo "Not a correct file"; 
    exit 1; 
fi 

,但它無法正常工作。它顯示以下錯誤,我無法理解,因爲我是bash腳本中的新成員。

/root/new_scripts/setpermission.sh: line 11: nfile_location: command not found 
chmod: missing operand after `777' 
Try `chmod --help' for more information. 
Set permission 
+0

如果這是bash和不POSIX外殼,如破折號,你可以做$ 2正則表達式匹配,而不管道和grep。 '[[$ 2 =〜^ [0-9] + $]] ||死「需要數字參數,$ 2提供」' – jordanm

回答

9

必須有沒有空格之前或=符號之後。

錯誤:nfile_location = /home/virtual/$1

正確:nfile_location=/home/virtual/$1

+0

非常感謝兄弟,這是一個愚蠢的錯誤。 – Pritom

+0

沒問題...它很常見... – mtahmed

+1

@ user1044804如果它幫助您解決問題,請接受答案。您可以通過點擊答案旁邊的「複選標記」來接受答案,使其成爲綠色。 :) –