首页 > 代码库 > shell的if判断比较

shell的if判断比较

shell中的if作用毋庸置疑每个80%的shell中都会应用到if判断,那么作为一个新手我应该咋整呢,今天听了一上午课,然后就把上午的东西总结了一下写成了一个脚本,然后来进行给大家聊一聊

#!/bin/bash
##############################################################
# File Name: bbjj.sh
# Version: V1.0
# Author: ls
# Organization: http://shuai12138.blog.51cto.com/
# Created Time : 2017-03-06 14:04:05
# Description:
##############################################################
read -p "pleace input: " -t 2 -n 1 x
echo""
read -p "pleace input: " -t 2 -n 1 y
echo"">/dev/null
if [ -n $x -a -n $y ]
then
if [[ "$x$y" =~ ^[0-9]+$ ]]
then
if [ $x -gt $y ]
then
 echo "$x>$y"
elif [ $x -eq $y ]
then
 echo "$x=$y"
else
 echo "$x<$y"
fi
else
echo "you must input number"
fi
else
echo "error:you must input two"
fi

 

首先来进行第一行的说明:read -p "pleace input: " -t 2 -n 1 x 

read -p来进行脚本交互式的输入“pleace input”就是在执行shell时的提示信息。 -t 2表示过了2秒钟你不输入,那么就会进行退出。-n 1表示我只限制你只能输入一个字符。

因为我要比较的是两个数的大小所以我用来2个read,但是为什么我要在这中间加一个echo “”呢?因为如果不加那么read就在在你输入完成$x那一行之后继续让你输入$y,这完全是为了美观。

echo"">/dev/null
为什么输出空我说了,但是为什么要定向到“黑洞”呢,这是因为如果我什么也不输入的话我的脚本会有提示信息,我不想看他,所以我给他定向到“黑洞”中。

if [ -n $x -a -n $y ]
then

fi

这是一个if判断,-n是否不为空,-a条件语句(两边都满足才行),这句话是判断只有你的两次输入都不为空,那么才会执行,否则会怎样。

 

if [[ "$x$y" =~ ^[0-9]+$ ]]
then

fi

这是一个数字判断,判断你输入的是否都是数字,因为如果你输入的是字母,那么系统可能是一二进制码来比较的没意义。所以我得判断一下是否为数字。(这里特别说一下我是把$x$x都统一放到一起进行比较的。要不然还会在进行判断,浪费内存)

 

if [ $x -gt $y ]
then
 echo "$x>$y"
elif [ $x -eq $y ]
then
 echo "$x=$y"
else
 echo "$x<$y"
fi

这就是数字的判断了。我要判断我输入的两个数字。-eq 等于 -gt 大于 -lt 小于 -ge 大于等于 -le小于等于。

 

本文出自 “我的学习” 博客,请务必保留此出处http://shuai12138.blog.51cto.com/10118203/1901603

shell的if判断比较