我正在尝试查看是否已匹配新行。原因是我的脚本要求输入用户名。如果按Enter键,则使用默认名称。
问题是我似乎无法检查他们是否已按下输入,或使用了他们自己的名字。我在网上搜索了很多,找不到合适的答案。以下是我试图实施的内容:
if [ `expr match "$temp1" "\n"` != 0 ]
对此非常陌生。谢谢!
答案 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'}。