外壳脚本用户提示/输入
题
这是原油Korn Shell脚本别人写的。我不知道很多有关使用shell语法,我甚至不知道这是可能的。
有没有办法对我来说,运行此文件,并提示输入日期,这样我就不必手动进入剧本,每一次改变它呢?
例如,我想与从用户提示所取的变量来取代“09年1月12日”。
#!/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。
如果你想添加一些简单的验证,而你使用的版本 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
其他提示
在一般从一个外壳脚本命令行参数可以像访问:
$0, $1, ... $N
所以,你可以替换硬编码的日期,如:
./room_xls.pl $1
和像
运行它./myscript 1/12/09
$ 1是第一个命令行参数。这上升到$ 9,检查此教程了解基本ksh的语法。
不隶属于 StackOverflow