创建一个脚本,以用户的一个单词作为参数

创建一个脚本,以用户的一个单词作为参数
echo "Enter your string"  
read str;

我如何进行检查以确保用户传递了一个单词,如果没有将单词作为参数传递,则显示使用说明。

答案1

[ "$str" ] || { echo "This is my usage statement"; exit 1; }

这里使用test,用 表示[...]。在这里使用的最简单的形式是,它仅测试字符串是否为非空(返回成功/真)或空(返回失败/假)。控制运算符||仅在前一个语句返回假时才执行后面的语句。

我假设,如果用户未能输入非空的str,则在发出使用语句后,您会希望以失败代码退出。如果不是,请删除exit 1

如果您有更复杂的事情要做,那么使用更正式的if语句:

if [ "$str" ]
then
    echo "This is my usage statement"
    # do other stuff....
    exit 1
fi

以上内容可在任何 POSIX shell 上运行,包括dash( /bin/sh) 和bash

其他测试

以下是两个相关测试(都需要bash):

[ "${str//[^[:digit:]]/}" ] || { echo "You entered no numbers"; exit 1; }

和,

[ "${str//[^[:alpha:]]/}" ] || { echo "You entered no letters"; exit 1; }

答案2

如果你想强制用户输入一个字符串而不是数字值,并一直询问直到输入满足要求,我肯定会在 while 循环中使用测试,例如:

#!/bin/bash

while true; 
do
  echo "Enter your string"
  read str;
  echo "${str}" | grep -q '[0-9]'
  if [ $? != 0 ] && [ "$str" != "" ] ; then
    break
  else 
    echo 'Invalid input' 
  fi
done
# use the input for further processing
echo $str

(使用来自这个帖子

答案3

您可以尝试使用 string$,并在终端中输入以下内容:

echo“输入你的名字”;字符串$读取字符串$

这样也许能很好地发挥作用。

相关内容