linux关于判断式的基础知识讲解,linux基础知识讲解


1、判断基础知识

当要检测某个文件或者文件d的相关属性,可以利用 test 命令

[root @loacalhost ~]#test -e /vitest

使用 test 命令检测 目录vitest是否存在

\

但是不会显示任何结果,因此进行改进为有“参数”输出的形式

[root @loacalhost ~]#test -e /vitest && echo "The dir exist" || echo "Not exist"

\

给出标志判断表

\

\

除了使用test之外,还可以使用 [] 判断符号进行判断

[root @loacalhost ~]#[ -z "$HOME" ];echo %

注意:因为中括号 [] 使用的地方很多,常见的有通配符和正则表达式,所以在bash语法重法中使用[] 作为shell的判断时,必须中括号[]的两端需要有空格来分割

1、中括号 [] 内的每个组件都需要空格键来分割

2、中括号 [] 内的变量,最好都以双引号括起来

3、中括号 [] 内的常量,最好以双引号或者单引号括起来

[root @loacalhost ~]#name="rhx"           #变量赋值时=左右两侧不能有空格
[root @loacalhost ~]#[ $name == "HOME" ]  #判断时=的左右两侧必须有空格

2、条件判断式

条件判断式即是满足某个条件时执行一个动作,不满足会执行相应的其他动作,下面一一介绍

a、单层 if...then 判断

if [ 条件判定式 ];then     #注意条件判定式左右两侧有空格
    action                 #条件成立时,执行action中的操作
fi                         #结束if判断,相当于是if左右翻转

示例如下:

#!/bin/bash
#program:
#       This program shows "Hello World!" in your screen
#History:
#205/08/3 rhx First Release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input (Y/N): " yn

if [ "$yn"  == "Y" ] || [ "$yn"  == "y" ];then
    echo "Ok ,continue"
	exit 0
fi

if [ "$yn" == "N" ] || [ "$yn" == "n" ];then
    echo "Oh interrupt"
	exit 0
fi

echo "I do not know what your choice is "&& exit 0

b、多重复杂判断 if elif else

if [ 条件判定式1 ];then     #注意条件1判定式左右两侧有空格
    action1                 #条件成立时,执行action1中的操作
elif [ 条件判定式2 ];then   
    action2                 #条件2成立时,执行action2中的操作
fi                          #结束if判断,相当于是if左右翻转
#!/bin/bash
#program:
#       This program shows "Hello World!" in your screen
#History:
#205/08/3 rhx First Release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input (Y/N): " yn

if [ "$yn"  == "Y" ] || [ "$yn"  == "y" ];then
    echo "Ok ,continue"
elif [ "$yn" == "N" ] || [ "$yn" == "n" ];then
    echo "Oh interrupt"
fi

在shell scripts中,scritpt针对参数有一些特殊设置,参数的对应关系如下,$0表示文件名

/tmp/scrpts      opt1      op2      opt3        opt4
     $0           $1       $2        $3          $4
#!/bin/bash
#program:
#       This program shows "Hello World!" in your screen
#History:
#205/08/3 rhx First Release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#read -p "Please input (Y/N): "yn

if [ "$1" == "hello" ];then
    echo "Hello,how are you "
elif [ "$1" == "" ];then
    echo "You MUST input parameters,ex> {$0 someword}"
else
    echo "The only parameters is 'hello',ex> {$0 hello}"
fi

\

c、case ...esac

case $variable in      #关键字case,变量variable前有符号$
     "value1")         #每个变量的内容建议用双括号括选起来,关键字外面为小括号),注意这里不同于常见的c/c++语言
	 ;;                #每个类型结束使用连续两个分号
	 
	 "value2"
	 ;;
	 
	 *)                #最后一个变量内容会用*来表示其他的值,像c/c++中的default选项
	 ;;
esac                   #case语法结束

示例如下:

#!/bin/bash
#program:
#       This program shows "Hello World!" in your screen
#History:
#205/08/3 rhx First Release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

function printit(){
    echo -n "Your choice is "
}

echo "This program will print your selection!"

case $1 in
    "one")
        printit;echo $1 | tr 'a-z' 'A-Z'
        ;;
     "two")
        printit;echo $1 | tr 'a-z' 'A-Z'
	 "three")
        printit;echo $1 | tr 'a-z' 'A-Z'
		;;		
     *)
	    echo "Usage $0 {one|two|three}"
	 ;;
esac

\

d、利用 function 功能

function funcname () {
         程序段
}

注意function中的$0,$1,$2与script中有所不同

相关内容