前提
こちらの課題を出されたのですが、未経験なうえ何も教えてもらえないまま出されてしまったので自分なりに調べたり質問してやってみたのですが、なかなかうまくいきません。
該当のソースコード
#!/bin/bash #初期設定 LogPath="./log" ToDate=`date +"%y%m%d%H%M"` LogDate=`date +"%y/%m/%d %H:%M:%S"` LogName="$LogPath/script_$ToDate.log" CreDir="./result" echo "シェルスクリプトを起動しました。" #ログフォルダがあるかチェックします。 if [ ! -d $LogPath ] ; then mkdir $LogPath 格納先を作成して、 echo $LogDate ": ログファイルが作成されました" >> $LogName fi 条件分岐終了 echo $LogDate ": シェルスクリプトが開始します" >> $LogName #ファイルを作成する回数を設定します。 num=$1 #フォルダがあるかチェックします。 if [ ! -d $CreDir ] ; then mkdir $CreDir echo $LogDate ": フォルダ $CreDir が作成されました" >> $LogName else echo $LogDate ": フォルダ $CreDir は存在します" >> $LogName fi #フォルダ内の不要ファイルを削除します。 rm -f $CreDir/* #ファイルを作成します。 ((j = 1)) while ((j <= $num)); do touch $CreDir/test$j echo $LogDate ": TEST$j ファイルが作成されました" >> $LogName ((j++)) done echo $LogDate ": シェルスクリプトが終了しました" >> $LogName echo "シェルスクリプトを終了しました。"
要件
➀現在は引数として数字以外は入力できる状態であり、数字以外を入力するとスクリプトが異常となる。引数を判定して数字以外だったらエラーをログに書き込んで終了するようにする。
<ヒント>
数字の判定には正規表現というものを利用する。
終了時は「exit 100」のコマンドを使用する
if文を利用する
➁現在は引数で入力した回数まで繰り返しを行い、ファイル「Test{数字0〜引数}」を順番に作成する。繰り返し処理を利用して、ファイル「Test{数字0〜引数}_{数字1〜9}」として作成する。
現在
Test1.Test2.....
変更後
Test1_1.Test1_2.....Test1_9.Test2_1.Test2_2
<ヒント>
多重ループ処理を実装する
という課題です。
試したこと
要件➀_____________________
#ファイルを作成する回数を設定します。 num=$1 if [[ "$num" =~ ^[0-9]+$ ]] ; then echo $LogDate ": is number" >> $LogName exit 100 else echo $LogDate ": not number" >> $LogName exit 100 fi
要件➁____________________
#ファイルを作成します。 ((j = 1)) while ((j <= $num)); do ((i = 9)) while ((i <= $num)); do touch $CreDir/test$j_$i echo $LogDate ": TEST$j_$i ファイルが作成されました" >> $LogName ((j++)) done ((i++)) done
見よう見まねでこのように変更して実行してみたのですが、起動メッセージのみしか出てきません...。どのようにしたらいいでしょうか。長文で申し訳ありませんがよろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー