Shell script user prompt/input

﹥>﹥吖頭↗ 提交于 2019-12-23 08:35:55

问题


This is a crude korn shell script that someone else wrote. I don't know much about using shell syntax and I'm not even sure if this is possible.

Is there any way for me to run this file and be prompted for the date so that I don't have to manually go into the script and change it each time?

For example, I want to replace the "1/12/09" with a variable that is taken from a user prompt.

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

回答1:


If you want to be prompted (as opposed to passing the date in as a parameter), use the following logic (or something similar):

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

That loop will continue to prompt for the date until the user enters something (anything) other than a simple RETURN.

If you want to add some simple validation, and you're using a version of KSH that's KSH93 or better, do something like this:

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

See the ksh93 man page for more info.




回答2:


In general from a shell script command line arguments can be accessed like:

$0, $1, ... $N

So you could replace the hardcoded date like:

./room_xls.pl $1

And run it like

./myscript 1/12/09



回答3:


$1 is the first command line argument. This goes up to $9. Check this tutorial for more basic ksh syntax.



来源:https://stackoverflow.com/questions/439390/shell-script-user-prompt-input

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!