How to prevent user to input nothing in bash script
我有一个程序,它将获取用户输入字符串并相应地创建输出文件,例如,"/basheexample2 j40087",这将为包含字符串j40087的文件夹中的所有文件创建输出文件。一个问题是,如果用户没有在输入字符串中输入任何内容,它将为包含文件夹中的每个文件生成输出文件。是否有方法阻止用户在输入字符串中输入任何内容?或者发出警告说"请输入一个输入字符串"。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #Please follow the following example as input: xl-irv-05{kmoslehp}312: ./bashexample2 J40087 #!/bin/bash directory=$(cd `dirname .` && pwd) ##declaring current path tag=$1 ##declaring argument which is the user input string echo find: $tag on $directory ##output input string in current directory. find $directory . -maxdepth 0 -type f -exec grep -sl"$tag" {} \; ##this finds the string the user requested for files in"$directory"/*"$tag"* ##for all the files with input string name... do if [[ $files == *.std ]]; then ##if files have .std extensions convert them to .sum files... /projects/OPSLIB/BCMTOOLS/sumfmt_linux <"$files">"${files}.sum" fi if [[ $files == *.txt ]]; then ## if files have .txt extensions grep all fails and convert them.. egrep"device|Device|\(F\)""$files">"${files}.fail" fi echo $files ##print all files that we found done |
我会这样做:
1 2 3 4 5 6 | tag=$1 if [ -z"$tag" ]; then echo"Please supply a string" exit 1 fi |
您可以使用$了解作为参数传递了多少个参数,然后询问是否至少有一个参数。
例如
1 2 | if [ $# -gt 0 ]; then ... your logic here ... |
另外,您可以使用$1读取传递给脚本的第一个参数,第二个参数可以使用$2,依此类推。
希望有帮助。