shell bash编程笔记合集: shell bash编程
if条件判断
1、if单分支判断
当条件成立时执行命令,否则不执行任何操作
if 条件测试
then 命令序列
fi
或者
if 条件测试;then
命令序列
fi
2、if双分支判断
当条件成立时执行命令1,否则执行命令2
if 条件测试
then 命令序列1
else
命令序列2
fi
或者
if 条件测试;then
命令序列 1
else
命令序列2
fi
3、if多分支判断
if 条件测试1;then
命令序列1
elif 条件判断2;then
命令序列2
……
else
命令序列n
fi
4、示例
#!/bin/bash
if [ $1 == "hi" ]
then echo -e "input hi" && exit
fi
if [ $1 -lt 10 ];then
echo -e "less than 10"
elif [ $1 -eq 10 ];then
echo -e "equal 10"
else
echo -e "input $1"
fi
for循环
根据变量的不同取值,重复执行命令序列,
注意大量循环可以使用…代替,比如1到100可用{1…100}代替,a到z可以用{a…z}代替
for 变量 in 值列表
do
命令序列
done
或者
for ((初值;条件;步长))
do
命令序列
done
示例:
#!/bin/bash
for i in 1 2 3
do
echo -e "#I am $i"
done
for ((i=1;i<=3;i++))
do
echo -e "*I am $i"
done
while循环
反复测试条件,成立时执行命令序列
while 条件测试
do
命令序列
done
示例:
#!/bin/bash
counter=0
while [ $counter -lt 5 ]
do
echo -e "counter=$counter"
counter=$[counter + 1]
done
case语句
检查、判断变量的取值;效果类似于多分支的if语句,如果与预设的值相匹配,则执行对应的操作,命令序列最后必须以双分号结尾
格式:
case 变量 in
模式1)
命令序列1;;
模式2)
命令序列2;;
……
*)
默认命令序列
esac
示例:
#!/bin/bash
#case语句的使用
#用户输入两个单词,用case语句进行匹配
read -p "请输入单词ubuntu或者单词redhat:" word
case $word in
ubuntu)
echo "ubuntu";;
redhat)
echo "redhat";;
*)
echo "没有匹配的单词!"
esac
shell中的数组
数组也是一个变量,是一个有点特殊的变量;存储多个数据的集合就是数组
定义数组:
变量名=(数据1 数据2 数据3 … 数据n)
访问数组中的第n个元素:
${变量名[n]}
示例:
#!/bin/bash
array=("hello")
array+=(" word!")
echo -e $array
echo -e "array:${array[0]}${array[1]}"
本节作业
编写脚本判断IP地址是否能够ping通
#!/bin/bash
string_1=' '
string_2='---------------------------'
green='\e[32m'
red='\e[31m'
defult='\e[39m'
bold='\e[1m'
if [ -z "$1" ];then
echo -e "\n$red usage:\n$string_1 [script] [ip address]"
exit
fi
ping -c5 -i0.5 -W2 "$1" &>/dev/null
if [ $? -eq 0 ];then
echo -e "\n$green $1 is up!\n"
else
echo -e "\n$red $1 is down!\n"
fi