シェルスクリプトユーザープロンプト/入力
質問
これは、誰かが書いた粗雑なkornシェルスクリプトです。シェル構文の使用についてはあまり知りませんし、これが可能かどうかもわかりません。
このファイルを実行して日付を入力するように指示する方法はありますので、毎回手動でスクリプトに移動して変更する必要はありませんか?
たとえば、「1/12/09」を置き換えたいユーザープロンプトから取得した変数を使用します。
#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
解決
(日付をパラメータとして渡すのではなく)プロンプトが表示されるようにするには、次のロジック(または同様のもの)を使用します。
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
done
このループは、ユーザーが単純なRETURN以外の何か(何か)を入力するまで、日付の入力を続けます。
いくつかの簡単な検証を追加する場合、バージョンを使用している KSH93以上のKSHの場合は、次のようにします。
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
if [[ $date =~ ^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}$ ]]
then
break
fi
date=
done
ksh93 manページ詳細情報。
他のヒント
一般に、シェルスクリプトからコマンドライン引数には次のようにアクセスできます。
./room_xls.pl $1
, $1, ... $N
したがって、次のようにハードコードされた日付を置き換えることができます。
./myscript 1/12/09
次のように実行します
<*>$ 1は最初のコマンドライン引数です。これは最大9ドルです。基本的なksh構文については、このチュートリアルを確認してください。
所属していません StackOverflow