7

这是其他人编写的粗略的 korn shell 脚本。我对使用 shell 语法知之甚少,我什至不确定这是否可能。

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

例如,我想用从用户提示中获取的变量替换“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

一般来说,可以从 shell 脚本中访问命令行参数,如下所示:

$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 回答