スクリプト出力をファイルにリダイレクトしますか? [閉鎖]

スクリプト出力をファイルにリダイレクトしますか? [閉鎖]

ユーザーが生成するファイルの名前を指定してから、スクリプト出力をそのファイルにリダイレクトできることを願っています。このスクリプトは長いディレクトリのリストを生成し、そのディレクトリ内のファイル数を数えます。これが私が今まで持っているものです:

echo -n "Please enter the name of a file to be created: "

read FILENAME

touch FILENAME

ls -l exampledir

echo

ls -l exampledir | wc -l

読み取りを正しく使用していない可能性があります。わかりません。

編集する

私はほとんどの内容を見つけました。ここに新しいコードがあります。

echo -n "Please enter the name of a file to be created: "

read FILENAME

ls -l Assign_7 > FILENAME

echo >> FILENAME

ls -l Assign_7 | wc -l >> FILENAME

私が理解していない唯一のことは、ユーザーが入力した名前でファイル名を指定する方法です。正しい内容が含まれていますが、ファイル名は常にFILENAMEです。

2番目の編集

調べました。各ファイル名の前に$を追加してください。

ベストアンサー1

とても簡単です:

#/bin/bash
echo -n "Please enter the name of a file to be created: "

read FILENAME

ls -l Assign_7 > $FILENAME
echo >> $FILENAME
ls -l Assign_7 | wc -l >> $FILENAME

これを言いますParameter Expansionman bash詳しくはこちらをご覧ください。

また、スクリプトを少し単純化し、bash出力ファイルを一度だけ開くようにするより短い形式もあります。

#/bin/bash
echo -n "Please enter the name of a file to be created: "

read FILENAME

exec > $FILENAME
ls -l Assign_7
echo ""
ls -l Assign_7 | wc -l

後者の形式では、コマンドを実行して現在のシェルをファイルにstdoutリダイレクトするため、シェルexec > $FILENAMEで実行されるすべての後続のコマンドの出力もそのファイルとして指定されます。

おすすめ記事