如何在IF片段中设置默认值?

时间:2010-05-30 01:40:40

标签: bash solaris

我在Solaris 10中编写的bash脚本中有以下代码段:

printf "port(389)="
read PORT
  if [[ $PORT == "" ]]; then
     PORT=389
  fi

我想要的是,如果用户点击回车键,则端口应设置为389。 上面的代码段似乎没有用。

有什么建议吗?

5 个答案:

答案 0 :(得分:1)

这会提示用户输入,如果单独输入,则将port的值设置为默认值“389”:

read -rp "port(389)=" port
port="${port:-389}"

答案 1 :(得分:0)

如果您将-e传递给read,则可以使用-i为提示指定初始值。

答案 2 :(得分:0)

如果用户没有输入任何内容,那么$PORT将被替换为任何东西 - 使用原始Bourne shell进行此工作的古老惯例是:

if [ "x$PORT" == "x" ]; then

虽然更现代的shell(即实际的bash,但不是Solaris 10 / bin / sh) 一个古老的Bourne shell)应该能够处理:

if [[ "$PORT" == "" ]]; then

甚至

if [[ -z "$PORT" ]]; then

答案 3 :(得分:0)

这不完全是你提出的问题,但Solaris有一套实用程序用于此类事情。

PORT=`/usr/bin/ckint -d 389 -p 'port(389)=' -h 'Enter a port number'`

查看其他/ usr / bin / ck *实用程序,提示用户输入其他类型的数据,包括文件或用户名等。

答案 4 :(得分:0)

只有shell的另一种方式   - 尝试参数替换:

read port
port=${port:-389}