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

私の推測では、それはあなたの 内のアスタリスク (" *")を含む行ですmyfile。何らかの方法で評価しf、アスタリスクがパターン マッチング文字として展開されると、おそらく問題が発生します。

例:

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

つながる

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

私のディレクトリには、、およびの3 つのファイルが含まれているためmyfile、が入力されたときに「process」で省略したコードが何を行うかを調べる必要があります。myfile~while3b.sh$f*

関連情報