Linux 如何防止用户在bash脚本中不输入任何内容

Linux 如何防止用户在bash脚本中不输入任何内容,linux,bash,Linux,Bash,我有一个程序,它将获取用户输入字符串并相应地创建输出文件,例如,“./bashexample2 J40087”这将为文件夹中包含字符串J40087的所有文件创建输出文件。一个问题是,如果用户没有在输入字符串中输入任何内容,它将为包含文件夹中的每个文件生成输出文件。有没有办法防止用户在输入字符串中不输入任何内容?或者可能会发出某种警告,说“请输入一个输入字符串” #请按照以下示例作为输入:xl-irv-05{kmoslehp}312:./bashexample2 J40087 #!/bin/bas

我有一个程序,它将获取用户输入字符串并相应地创建输出文件,例如,“./bashexample2 J40087”这将为文件夹中包含字符串J40087的所有文件创建输出文件。一个问题是,如果用户没有在输入字符串中输入任何内容,它将为包含文件夹中的每个文件生成输出文件。有没有办法防止用户在输入字符串中不输入任何内容?或者可能会发出某种警告,说“请输入一个输入字符串”

#请按照以下示例作为输入:xl-irv-05{kmoslehp}312:./bashexample2 J40087
#!/bin/bash
目录=$(cd`dirname.`&&pwd)##声明当前路径
tag=$1##声明作为用户输入字符串的参数
echo find:$directory上的标记##当前目录中的输出输入字符串。
查找$directory-maxdepth 0-type f-exec grep-sl“$tag”{}\##这将查找用户请求的字符串
对于“$directory”/*“$tag”*##中的文件,对于所有具有输入字符串名称的文件。。。
做
如果[[$files==*.std]];然后##如果文件扩展名为.std,则将其转换为.sum文件。。。
/projects/OPSLIB/BCMTOOLS/sumfmt_linux<“$files”>“${files}.sum”
fi
如果[[$files==*.txt]];然后###如果文件扩展名为.txt,grep all将失败并转换它们。。
egrep“设备|设备| \(F\)”$files“>“${files}.fail”
fi
echo$files##打印我们找到的所有文件
完成

我会这样做:

tag=$1

if [ -z "$tag" ]; then
  echo "Please supply a string"
  exit 1
fi
您可以使用$#了解有多少个参数作为参数传递,然后询问是否至少有一个参数

比如说

if [ $# -gt 0 ]; then
    ... your logic here ...
除此之外,您还可以使用$1读取传递给脚本的第一个参数,第二个参数使用$2,依此类推


希望对您有所帮助。

如果字符串长度为零,则可能的重复返回true
if [ $# -gt 0 ]; then
    ... your logic here ...