unix/linux bash 上的 `line` 指令提示權限被拒絕訊息

unix/linux bash 上的 `line` 指令提示權限被拒絕訊息

最近在學習如何編寫腳本程式碼。

我寫了一個腳本:

#!/bin/sh
# while3b.sh
while f=`line`
do
        .. process f ..
done < ./myfile

這是myfile

hello
howdy
gday
bonjour
guten tag 
您好!
*

在終端機中,我輸入:sh while3b.sh然後它會提示一些像這樣的權限資訊。

while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied

我嘗試使用來ls -al檢查rwxmyfile

-rwxrwxrwx 1 shanechiu shanechiu    48 Jan 31 11:38 myfile
-rwxr-xr-x 1 shanechiu shanechiu    61 Jan 31 11:45 while3b.sh

我曾經su - root更改為超級用戶,然後再次執行 while3b.sh 腳本,顯示相同的資訊。為什麼?

有人可以幫我一個忙嗎?先感謝您。

答案1

*我的猜測是,它是您的 .txt 檔案中包含星號(“”)的行myfilef當星號擴展為模式匹配字元時,您以某種方式進行評估,並且可能會遇到麻煩。

例子:

#!/bin/sh
# while3b.sh
while f=`line`
do
        echo $f
done < ./myfile

導致

$ ./while3b.sh
hello
howdy
gday
bonjour
guten tag
您好!
myfile myfile~ while3b.sh

因為我的目錄包含三個文件myfilemyfile~while3b.sh。您應該檢查您的程式碼,您將其縮寫為“處理”,當$f收到*.

相關內容