ファイルに書き込み権限があることを確認する簡単なスクリプトがあります。その場合、ユーザーはファイルの末尾にいくつかのテキストデータを追加できます。そうでない場合、そのユーザーは追い出されます。
私はプログラミング知識を使ったシェルスクリプト学習のYouTubeシリーズに従います。特にビデオ7。
スクリプトは次のとおりです。
echo -e "Enter file name: \c"
read filename
if [ -f $filename ]
then
if [ -w $filename ]
then
echo "Type some text data. To quit, press CTRL + d: "
cat >> $filename
else
echo "File has no write permissions"
fi
else
echo "$filename is not found"
fi
私のスクリプトは、書き込み権限がなくてもユーザーが提供されたファイルに追加できるようにします。-O
または、他のフラグは-s
期待どおりに機能します。ここに問題がありますか?
ls -l
利用可能なファイルから実行:
-r--r--r-- 1 nobody nobody 0 Dec 6 12:25 Mane
-r-xr-xr-x 1 root root 165 Dec 6 12:06 Ramy.txt
-r--r--r-- 1 root root 0 Dec 6 12:24 Salah
デバッグをオンにした状態でスクリプトを実行すると出力されます。
[root@Console2-4KMH2 scripts]# bash -x ./hello_FILE_TEST_OPERAT_APPEND_2_File.sh
+ echo -e 'Enter file name: \c'
Enter file name: + read filename
Salah
+ '[' -f Salah ']'
+ '[' -w Salah ']'
+ echo 'Type some text data. To quit, press CTRL + d: '
Type some text data. To quit, press CTRL + d:
+ cat
私の問題は解決しました。私の愚かな投稿のすべての編集に感謝します。コメントセクションのStephen Harrisは、私がスクリプトをrootとして実行していることを確認し、ファイルに書き込み権限がない場合でも、rootがファイルに書き込むことを強調しました。 sudoユーザーを作成してスクリプトを再実行したところ、期待どおりに機能することが確認されました(書き込み権限がないとファイルに書き込まれません)。
答え1
私の質問に対する答えは、Stephen Harrisのコメントセクションにあります。彼は私がrootでスクリプトを実行すると、書き込み権限があるかどうかにかかわらず、スクリプトがすべてのファイルに書き込むことを発見しました。