加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 16:15:53 所属栏目:安全 来源:网络整理
导读:(一)题目: 接受一个用户输入,判断这个输入是否可以作为变量 可以作为变量的条件 (1)大小写字母都可以 (2)字母中间可以有数字,但是不能以数字开头 (3)特殊字符除了“_ ”其他都不可以作为变量 例如: [root@localhost hushuai]# bash 22.sh In

(一)题目:

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

可以作为变量的条件

(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:

#!/bin/bash

read-p"Input:"a
b=`echo$a|sed-r's/[a-zA-Z0-9_]/a/g'|grep-o'a'|wc-l`
c=${#a}
d=`echo$a|cut-c1`
echo$d|grep'[0-9]'&>/dev/null
if[$?-eq0];then
echo$aisnot&&exit0
fi
if[$c-eq$b];then
echo$aisok
else
echo$aisnot
fi


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

版本(二)

shell 代码如下:

#!/bin/bash

read-p"Input:"a
d=`echo$a|cut-c1`
echo$d|grep'[0-9]'&>/dev/null
if[$?-eq0];then
echo$aisnot&&exit0
fi

b=`echo$a|sed-r's/[a-zA-Z_0-9]//g'`
if[-z$b];then
echo$aisok
else
echo$aisnot
fi


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

例如:版本(三)

shell代码如下:

#!/bin/bash

read-p"PlzInputAname:"n
s=${#n}

start=`echo$n|cut-c1`
check=`echo$start|grep-c'[a-zA-Z_]'`
if[$check-ne1];then
echo"Namenotok"&&exit1
fi

foriin`seq2$s`
do
xxoo=`echo$n|cut-c$i`
check=`echo$xxoo|grep-c'[a-zA-Z_0-9]'`
if[$check-ne1];then
echo"Namenotok"&&exit1
fi
done
echo"Nameisok"

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

命令:eval

版本(四):

#!/bin/bash

read-p"Input:"n
eval$n=1&>/dev/null

if[$?-eq0];then
echo"Nameisok"
else
echo"Nameisnot"
fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读