• 締切済み

シェルスクリプトの問題で困っています!

シェルスクリプトの問題を解いているのですが、いまいち分かっていないところが多いです… X 年からY 年までのカレンダーをファイル(cal-年.txt)に出力するシェルスクリプト(mkcal.sh)を 作成せよ。 実行書式./mkcal.sh x y [必須項目] 1. ファイル作成と同時にメッセージを出力し,作成したファイルが分かるようにすること。 出力例 ./mkcal.sh 2010 2012 Making cal-2010.txt Making cal-2011.txt Making cal-2012.txt 2. 作成しようとしているファイル(cal-XXXX.txt)が既に存在する場合には,エラーメッセージ File exists: cal-XXXX.txt を表示して,ファイルを作成しないこと。 出力例(cal-2011.txt が存在する場合) ./mkcal.sh 2010 2012 Making cal-2010.txt Making cal-2011.txt File exists: cal-2011.txt Making cal-2012.txt [自由項目] 1. mkcal.sh の引数を3 つ与えて実行すると,z 年飛ばしでカレンダーを出力すること。 実行書式./mkcal.sh x y z という問題に対し #!/bin/sh n=$1 while [ $n -le $2 ]; do echo "Making cal-$n.txt" /usr/bin/cal $n > cal-$n.txt n=`expr $n + 1` done #!/bin/sh n=$1 while [ $n –le $2 ]; do echo "Making cal-$n.txt" if [ -f "cal-$n.txt" ]; then echo "File exists: cal-$n.txt" else /usr/bin/cal $n > cal-$n.txt fi n=`expr $n + 1` done #!/bin/sh n=$1 while [ $n –le $2 ]; do echo "Making cal-$n.txt" if [ -f "cal-$n.txt" ]; then echo "File exists: cal-$n.txt" else /usr/bin/cal $n > cal-$n.txt fi n=`expr $n + $3` done とやっているのですが、どこで保存をすればいいか、そもそもの保存をするコマンドが分かっていない、これは合っているのか…と色々と問題点があります 誰か助けてください…お願い致します

みんなの回答

回答No.1

こんにちわ。 ヒントのみですが・・・ #b-shelと仮定します。 1.ファイルが存在するか? if [ -f filename ]; then echo ファイルがあります else echo ファイルがありません fi 2.保存 保存というコマンドは確かにありません。 しかし、実際は・・・ echo 1 > 1.txt (上書き) echo 1 >> 1.txt (追記) という「リダイレクト」ができます。 ※ ls -al > fieist.txt とかやって cat fielist.txt をすると ls -al と同じ内容がでます。 実際、どのような動作をするかhが、ご自身で確認してみてください。 ※上記のソースは確認していませんので、あっているかは確認していません。 以下おまけ・・・リダイレクトは入力もできます。 cat だけ入力すると Ctrl+Dを押すまで、永遠と入力できてしまうのですが・・・・ cat filename.txt とやると、普通に表示できます。 全く同様に、標準入力からも入力できます。 cat < fiename.txt そのほか、「パイプ」というのもあります。 ls -al | grep \.txt とかやると、おそらくテキストファイルだけでてくるのではないかと。。。 (注:ls -al *.txt とは実行結果がことなる可能性があります)

関連するQ&A