(一)题目:
接受一个用户输入,判断这个输入是否可以作为变量
可以作为变量的条件
(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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/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
[ $? -
eq
0 ];
then
echo
$a is not &&
exit
0
fi
if
[ $c -
eq
$b ];
then
echo
$a is ok
else
echo
$a is not
fi
|
版本一替换后还要统计个数,很麻烦,我们直接替换成空不就好了吗?在版本(一)基础上的修改
版本(二)
shell 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/bin/bash
read
-p
"Input:"
a
d=`
echo
$a |
cut
-c1`
echo
$d |
grep
'[0-9]'
&>
/dev/null
if
[ $? -
eq
0 ];
then
echo
$a is not &&
exit
0
fi
b=`
echo
$a |
sed
-r
's/[a-zA-Z_0-9]/ /g'
`
if
[ -z $b ];
then
echo
$a is ok
else
echo
$a is not
fi
|
这是一种方法因为写了正则,所以比较简单,其实我们还可以一个字母一个字母来比较
例如:版本(三)
shell代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/bin/bash
read
-p
"Plz Input A name:"
n
s=${
#n}
start=`
echo
$n |
cut
-c1`
check=`
echo
$start |
grep
-c
'[a-zA-Z_]'
`
if
[ $check -
ne
1 ];
then
echo
"Name not ok"
&&
exit
1
fi
for
i
in
`
seq
2 $s`
do
xxoo=`
echo
$n |
cut
-c $i`
check=`
echo
$xxoo |
grep
-c
'[a-zA-Z_0-9]'
`
if
[ $check -
ne
1 ];
then
echo
"Name not ok"
&&
exit
1
fi
done
echo
"Name is ok"
|
上面所有的一切只是提供一种思路和方法;一定要学会在一个问题上多研究研究,其实如果你知道一个命令的话还有另外一种方法
命令:eval
版本(四):
1
2
3
4
5
6
7
8
9
10
|
#!/bin/bash
read
-p
"Input:"
n
eval
$n=1 &>
/dev/null
if
[ $? -
eq
0 ];
then
echo
"Name is ok"
else
echo
"Name is not"
fi
|
本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1968420,如需转载请自行联系原作者