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,如需转载请自行联系原作者
相关文章
|
7月前
|
Shell Linux
|
7月前
|
Shell Python
python 和shell 变量互相传递
python 和shell 变量互相传递
67 0
|
7月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
122 0
|
2月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
26 0
|
3月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
3月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
48 5
|
3月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
32 0
|
4月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
227 1
|
5月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
46 10
|
7月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
94 2