ユーザーが生成するファイルの名前を指定してから、スクリプト出力をそのファイルにリダイレクトできることを願っています。このスクリプトは長いディレクトリのリストを生成し、そのディレクトリ内のファイル数を数えます。これが私が今まで持っているものです:
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 Expansion
。man 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
で実行されるすべての後続のコマンドの出力もそのファイルとして指定されます。