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

(一)题目:

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

可以作为变量的条件

(1)大小写字母都可以

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

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

例如:

[[email protected] hushuai]# bash 22.sh

Input:1dsf

Name is not

[[email protected] hushuai]# bash 22.sh

Input:=ewr

Name is not

[[email protected] hushuai]# bash 22.sh

Input:_

Name is ok

[[email protected] hushuai]# bash 22.sh

Input:_123

Name is ok

[[email protected] 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 [ $? -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 代码如下:

#!/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代码如下:

#!/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

版本(四):

#!/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

时间: 2024-10-05 04:40:24

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

【shell】Linux shell 之 判断用户输入的变量是否为数字

本文内容:判断用户输入的参数是否为数字 在shell中如何进行计算? 方式一 [[email protected] scripts]# echo $((1+2)) 3 方式二 [[email protected] scripts]# expr 2 + 3 5 [[email protected] scripts]# 注意:使用方式二的时候,要求必须要有间隔.如果使用的是乘法,号必须进行转义写为 \ [[email protected] scripts]# expr 2 * 3 expr: 语法错

alertDialog创建登陆界面,判断用户输入

alertDialog创建登陆界面,需要获取用户输入的用户名和密码,获取控件对象的时候不能像主布局文件那样获得, 需要在onClickListener中获取,代码如下: 1 public boolean onOptionsItemSelected(MenuItem item) { 2 // TODO Auto-generated method stub 3 switch(item.getItemId()){ 4 case 1: 5 Intent intent = new Intent(); 6

以写代学:python 数据类型之字符串,判断用户输入的id是否符合要求

字符串操作符 比较操作符:字符串大小按ASCLL码值大小进行比较 切片操作符:[].[:].[::] 成员关系操作符:in.not in 脚本:判断用户输入的id是否符合要求 #!/usr/bin/env python import string #定义字符的范围first_id = string.letters + "_"           //确定首字符的范围all_id = string.digits + first_id         //确定其他字符的范围 #请求用户输入

判断用户输入的邮箱地址是否合法 传说中的正则表达式?

判断用户输入的邮箱地址是否合法 - (BOOL) validateEmail: (NSString *) candidate { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", em

43.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”

//1.学习到字符输入 //2.判断字符 #include<iostream> using namespace std; int main() { char a; cout<<"please input a charcter: "<<endl; cin>>a; if(a>'0'&&a<'9') { cout<<"it's a numerical character!"<&l

Java小案例——判断用户输入的月份的季节

 要求:  *  根据用户输入的月份来判断该月季节 实现代码: import java.util.Scanner; /** * 要求: * 根据用户输入的月份来判断该月季节 * @author Administration * */ public class JudgeSeason { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个

iOS判断用户输入的银行卡号是否正确

为了打造更好的用户体验,同时减轻服务器端的压力,对于一些如,手机号码,银行卡号,身份证号码判断是否正确是很有必要的 下面是一小段判断银行卡号输入是否正确的代码方法供大家参考 - (void)viewDidLoad { [super viewDidLoad]; NSString *str = @"6226820011200783033"; BOOL isRight = [self checkCardNo:str]; if (!isRight) { UIAlertView *alert =

判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /** *  银行卡格式校验 * *  @param cardNo 银行卡号 * *  @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum = 0;     //奇数求和 int evensum = 0;    //偶

java采用3种方式判断用户输入的字符串是否为回文

一.描述 回文的定义:"回文数" 就是正读倒读都一样的整数.如奇数个数字:98789, 这个数字正读是98789,倒读也是98789:偶数个数字3223也是回文数. 我们今天将回文数扩展为字母和数字组合回文,如adgu6776ugda也是回文,我们采用三种方式判断这种类型的字符串是否为回文: 1.调用StringBuffer类对象的reverse()方法,将字符串翻转后与之前的字符串比较,如果相等则为回文,反之亦然: 2.采用low和high两个变量分别对应字符串对称位置的index,