匹配新行 - Unix Shell

时间:2011-08-03 21:19:49

标签: unix shell

我正在尝试查看是否已匹配新行。原因是我的脚本要求输入用户名。如果按Enter键,则使用默认名称。

问题是我似乎无法检查他们是否已按下输入,或使用了他们自己的名字。我在网上搜索了很多,找不到合适的答案。以下是我试图实施的内容:

if [ `expr match "$temp1" "\n"` != 0 ]

对此非常陌生。谢谢!

3 个答案:

答案 0 :(得分:3)

您无需检查是否已按下输入。只需检查字符串的长度。例如:

if [ -z $input ]
then
    echo "No name was input. Setting default name"
    name=JOE
fi

或者,您可以使用以下bash语法将变量设置为默认值:

name=${input:-JOE}

这意味着如果未设置变量input,则name将设置为默认值“JOE”。

答案 1 :(得分:1)

尝试这样的事情:

#!/bin/sh
/bin/echo -n "Who? "
read name
if [ "x$name" != "x" ]
then
    echo "Hi $name"
else
    echo "Hi no-name"
fi

答案 2 :(得分:1)

你可以使用`read'bash builtin:

echo 'what is your name?'; read name; echo Hi ${name:='John'}

如果用户在不输入任何名称的情况下按Enter键,则会将名称“John”指定为默认名称。

我忘了添加有帮助的功能是默认的shell变量值赋值,如果没有设置$ {name:='John'}。