7

これは、他の誰かが書いた粗雑な korn シェル スクリプトです。シェル構文の使用についてはよくわかりません。これが可能かどうかさえわかりません。

このファイルを実行して日付の入力を求めるプロンプトが表示されるようにする方法はありますか?

たとえば、「1/12/09」をユーザー プロンプトから取得した変数に置き換えたいとします。

#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
4

3 に答える 3

19

(日付をパラメーターとして渡すのではなく) プロンプトが表示されるようにする場合は、次のロジック (または同様のもの) を使用します。

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 のマニュアル ページを参照してください。

于 2009-01-13T16:11:57.613 に答える
3

一般に、シェル スクリプトのコマンド ライン引数からは、次のようにアクセスできます。

$0, $1, ... $N

したがって、次のようにハードコードされた日付を置き換えることができます。

./room_xls.pl $1

そして、それを次のように実行します

./myscript 1/12/09
于 2009-01-13T15:40:10.890 に答える
2

$1 は最初のコマンド ライン引数です。これは 9 ドルまで上がります。より基本的な ksh 構文については、このチュートリアルを確認してください。

于 2009-01-13T15:38:25.697 に答える