Shell脚本用户提示/输入

时间:2009-01-13 15:33:47

标签: shell input variables ksh prompt

这是其他人写的粗糙的korn shell脚本。我不太了解使用shell语法,我甚至不确定这是否可行。

有没有办法让我运行这个文件并提示输入日期,这样我就不必手动进入脚本并每次都更改它?

例如,我想将“1/12/09”替换为从用户提示中获取的变量。

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

3 个答案:

答案 0 :(得分:18)

如果要提示(而不是将日期作为参数传递),请使用以下逻辑(或类似的东西):

date=
while [ -z $date ]
do
    echo -n 'Date? '
    read date
done

该循环将继续提示日期,直到用户输入除简单RETURN之外的任何内容()。

如果您想添加一些简单的验证,并且您正在使用的是 KSH是KSH93或更好,做这样的事情:

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

有关详细信息,请参阅the ksh93 man page

答案 1 :(得分:3)

通常,从shell脚本命令行可以访问参数,如:

$0, $1, ... $N

所以你可以替换硬编码的日期,如:

./room_xls.pl $1

然后像

一样运行
./myscript 1/12/09

答案 2 :(得分:2)

$ 1是第一个命令行参数。这最高可达9美元。检查此tutorial以获取更基本的ksh语法。