shell整理(29)===判断用户输入可不可以作为变量

前端之家收集整理的这篇文章主要介绍了shell整理(29)===判断用户输入可不可以作为变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

(一)题目:

接受一个用户输入,判断这个输入是否可以作为变量

可以作为变量的条件

(1)大小写字母都可以

(2)字母中间可以有数字,但是不能以数字开头

(3)特殊字符除了“_ ”其他都不可以作为变量

例如:

[root@localhost hushuai]# bash 22.sh

Input:1dsf

Name is not

[root@localhost hushuai]# bash 22.sh

Input:=ewr

Name is not

[root@localhost hushuai]# bash 22.sh

Input:_

Name is ok

[root@localhost hushuai]# bash 22.sh

Input:_123

Name is ok

[root@localhost hushuai]#




shell 代码如下:

版本1:

  1. #!/bin/bash
  2.  
  3. read-p"Input:"a
  4. b=`echo$a|sed-r's/[a-zA-Z0-9_]/a/g'|grep-o'a'|wc-l`
  5. c=${#a}
  6. d=`echo$a|cut-c1`
  7. echo$d|grep'[0-9]'&>/dev/null
  8. if[$?-eq0];then
  9. echo$aisnot&&exit0
  10. fi
  11. if[$c-eq$b];then
  12. echo$aisok
  13. else
  14. echo$aisnot
  15. fi


版本一替换后还要统计个数,很麻烦,我们直接替换成空不就好了吗?在版本(一)基础上的修改

版本(二)

shell 代码如下:

  1. #!/bin/bash
  2.  
  3. read-p"Input:"a
  4. d=`echo$a|cut-c1`
  5. echo$d|grep'[0-9]'&>/dev/null
  6. if[$?-eq0];then
  7. echo$aisnot&&exit0
  8. fi
  9.  
  10. b=`echo$a|sed-r's/[a-zA-Z_0-9]//g'`
  11. if[-z$b];then
  12. echo$aisok
  13. else
  14. echo$aisnot
  15. fi


这是一种方法因为写了正则,所以比较简单,其实我们还可以一个字母一个字母来比较

例如:版本(三)

shell代码如下:

  1. #!/bin/bash
  2.  
  3. read-p"PlzInputAname:"n
  4. s=${#n}
  5.  
  6. start=`echo$n|cut-c1`
  7. check=`echo$start|grep-c'[a-zA-Z_]'`
  8. if[$check-ne1];then
  9. echo"Namenotok"&&exit1
  10. fi
  11.  
  12. foriin`seq2$s`
  13. do
  14. xxoo=`echo$n|cut-c$i`
  15. check=`echo$xxoo|grep-c'[a-zA-Z_0-9]'`
  16. if[$check-ne1];then
  17. echo"Namenotok"&&exit1
  18. fi
  19. done
  20. echo"Nameisok"

上面所有的一切只是提供一种思路和方法;一定要学会在一个问题上多研究研究,其实如果你知道一个命令的话还有另外一种方法

命令:eval

版本(四):

  1. #!/bin/bash
  2.  
  3. read-p"Input:"n
  4. eval$n=1&>/dev/null
  5.  
  6. if[$?-eq0];then
  7. echo"Nameisok"
  8. else
  9. echo"Nameisnot"
  10. fi

猜你在找的Bash相关文章