Shell 脚本用户提示/输入

标签 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

最佳答案

如果您希望收到提示(而不是将日期作为参数传递),请使用以下逻辑(或类似的逻辑):

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了解更多信息。

关于Shell 脚本用户提示/输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439390/

相关文章:

linux - unix下同步四个shell脚本依次运行

string - Golang : Issues replacing newlines in a string from a text file

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

linux - 将带有参数的命令作为字符串传递给 docker run

python - 如何逃避 os.system() 调用?

没有root权限的Linux原始输入?

python - 如何在Python中分配类变量 "dynamically"?

javascript - 重新声明 JavaScript 变量有什么用吗?

Python/Bash - 获取带有转义字符的文件名

c - 如何使用 scanf() 扫描其中包含空格的字符串?