LIinux ShellI 脚本基本常用语法

1.判断语句格式
格式 : [ 条件判断 ]
注意两边都有空格

 文件测试 : [  操作符   文件或者目录 ]
  操作符               作用
  -d                    判断是否为目录
  -e                    测试文件或目录是否存在
  -f                      判断是否为文件
  -r                    判是否有读权限

测试 /etc/fstab 是否为目录

[root@localhost ~]# [ -d /etc/fstab ]
[root@localhost ~]# echo $?
1

判断 /etc/cdrom 是否存在

[root@localhost ~]# [ -e /dev/cdrom ] && echo "exist"
exist

逻辑测试 :[ 表达式 1 ] 操作符 [ 表达式2 ]

操作符 作用
&& 逻辑与 ,而且
|| 逻辑或 ,或者
! 逻辑否

列如 判断当前用户是不是root

[root@localhost ~]# [ $USER == root  ] &&echo " yes "  || echo "no "
 yes
 - [ ] 数值比较 : [  整数1  操作符   整数2 ]  
   操作符                          作用
    -eq                         判断是否等于
    -ne                         判断是否不等于
    -gt                          判断是否大于
    -lt                           判断石头小于
    -le                          判断是否等于或小于
    -ge                        判断是否大于或等于

例如

[root@localhost ~]# [ 100  -eq  100 ] && echo 'yes'
yes

字符串比较 : [ 字符串 1 操作符 字符串2 ]

操作符                      作用
=                           比较字符串是否相同
!=                         比较字符串是否不同
-z                           判断字符串内是否为空

例如 判断string 变量是否为空值

[root@localhost ~]# [ -z $String ] && echo "yes"
yes

判断当前语系语言是否为英文 ,否则输出 “不是英语”

[root@localhost ~]# [ $LANG == "en.US" ] && echo "yes" || echo "no"
no

2.条件判断语句

if 单分支语句

判断/tmp/sxd 是否存在

#!/bin/bash
if [ -e /tmp/sxd ]
then

  ehco "exist"

else
  echo "no exist"

fi
~
[root@localhost tmp]# ./2
no exist

双分支 if 语句
判断 主机能否ping同 ,根据返回结分别给以提示或警告。

#!/bin/bash
ping -c 4  $1 &> /dev/null

if [ $? -eq 0 ]
then
echo "Host $1 is up "
else
echo " Host $1 is down "


fi

[root@localhost tmp]# ./3 192.168.144.11
Host 192.168.144.11 is up

if 格式

if [ 条件判断 ]
then
    若符合条件内容,执行语句
 elif  [  条件判断 ]
 then
    如符合elif 中条件,执行语句
 else
    若都不符合,执行语句
 fi 

用于给变量赋值的read命令

read  -p “提示信息”  变量名
#!/bin/bash
read -p " please input your love number "  sxd
if [ $sxd -gt  1 ]
then
 echo "yes,your are beafultel"
else
 echo "no.your  too small"

fi
~
[root@localhost tmp]# ./1
 please input your love number 2
yes,your are beafultel

3.循环语句
for 条件循环

for  变量名  in    变量值
do 
 执行命令
 done
用for 写一个9 9加法表

#!/bin/bash
d="1 2 3 4 5 6 7 8 9 "
for s in  $d
do
 for  q in  $d
    do
     x=$[ $s + $q ]
    echo " $s+$q=$x "
    done
done
[root@localhost tmp]# ./2
 1+1=2
 1+2=3
 1+3=4
 1+4=5
 1+5=6
 1+6=7
 1+7=8
 1+8=9
 1+9=10
 2+1=3
 2+2=4
 2+3=5
 2+4=6
 2+5=7
 2+6=8
 2+7=9
 2+8=10
 2+9=11
 3+1=4
 3+2=5
 3+3=6
  ...


while 循环语句

while [ 条件判断 ]
do 
  执行语句
done

注意 :当条件符合时 ,才执行语句,不符合时,跳出循环

例如

#!/bin/bash
read -p " please input  number :" sxd
while [ $sxd -gt 10 ]
do
 echo "the nubmer is $sxd"
 sxd=$[ $sxd-1 ]
done
~
~
[root@localhost tmp]# ./3
 please input  number :15
the nubmer is 15
the nubmer is 14
the nubmer is 13
the nubmer is 12
the nubmer is 11

当条件不大于10 时跳出循环

4.case…easc 判断

case $变量名称 in
  "内容一“ )
 执行程序
    ;;
 ”内容二“ )
 执行程序
   ;;
 *        )
 执行程序
    ;;
 esac

root@localhost tmp]# vi 5
#!/bin/bash
case $1 in
"1" )
echo "number is 1"
  ;;
*)
echo "please input 1"
  ;;
esac

[root@localhost tmp]# ./5  1
number is 1
[root@localhost tmp]# ./5  5
please input 1

这些都是脚本基本语法 ,一定要掌握

猜你喜欢

转载自blog.csdn.net/weixin_43142231/article/details/82813638