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
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  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,如需转载请自行联系原作者
相关文章
|
2月前
|
Shell Linux
|
2月前
|
Shell Python
python 和shell 变量互相传递
python 和shell 变量互相传递
34 0
|
2月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
67 0
|
2月前
|
Unix Shell Linux
shell变量的作用域
shell变量的作用域。
31 0
|
2月前
|
Shell
shell脚本入门到实战(三) - 变量
shell脚本入门到实战(三) - 变量
|
2月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
38 2
|
13天前
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
16 0
|
28天前
|
Shell Linux
linux shell 脚本中变量截取
linux shell 脚本中变量截取
21 0
|
2月前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
2月前
|
Shell
【shell】shell命令行放在变量中执行以及变量的常用方法
【shell】shell命令行放在变量中执行以及变量的常用方法