linux关于判断式的基础知识讲解,linux基础知识讲解
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中有所不同
评论暂时关闭