shell基础编程
Posted cyy2022989579
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell基础编程相关的知识,希望对你有一定的参考价值。
1.运算符
基本语法
1)"$((运算式))"或"$[运算式]"
2)expr m + n
注意expr运算符间要有空格
3)expr m - n
4)expr *,/,% 乘,除,取余
应用实例
案例1:计算(2+3)*4的值
第一种方式
RESULT1=$(((2+3)*4))
echo "result1=$RESULT1"
第二种方式
RESULT2=$[(2+3)*4]
echo "result2=$RESULT2"
第三种方式
TEMP=`expr 2 + 3`
RESULT3=`expr $TEMP * 4`
echo "result3=$RESULT3"
案例2:请求出命令行的两个参数的和
SUM=$[$1+$2]
echo "sum=$SUM"
执行时,./demo.sh 10 5
2.条件判断
基本语法
[ condition ](注意conditon前后要有空格)
非空返回true,可使用$?验证(0为true, >1为false)
应用实例
[ hello ]返回true
[] 返回false
常用判断条件
1)两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2)按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
4)应用实例
案例1:"ok"是否等于"ok"
if [ "ok" = "ok" ]
then
echo "equal"
fi
案例2:23是否大于等于22
if [ 23 -gt 22 ]
then
echo "大于"
fi
案例3:/root/shell/aaa.txt的文件是否存在
if [ -e /root/shell/aaa.txt ]
then
echo "存在"
fi
3.流程控制
if判断
基本语法
if [ 条件判断式 ]
then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
(2)推荐使用第二种方式
应用实例
案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出
"及格了",如果小于60,则输出"不及格"
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
echo "不及格"
fi
case语句
基本语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
应用实例
案例1:当命令行参数是1时,输出"周一",是2时,就输出"周二",其它情况输出"other"
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
for 循环
基本语法1
for 变量 in 值1 值2 值3...
do
程序
done
应用实例
案例1:打印命令行输入的参数
使用$*(当作整体输出)
for i in "$*"
do
echo "the num is $i"
done
使用$@(分开输出)
for j in "$@"
do
echo "the num is $j"
done
基本语法2
for((初始值;循环控制条件;变量变化))
do
程序
done
案例2:从1加到100的值输出显示(这里可以看出$*和$@的区别)
SUM=0
for ((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"
while循环
while [ 条件判断式 ]
do
程序
done
应用实例
从命令行中输入一个数n,统计从1+...+n的值是多少?
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "sum=$SUM"
read读取控制台输入
基本语法
read(选项)(参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
参数
变量:指定读取值的变量名
应用实例
案例1:读取控制台输入一个num值
read -p "请输入一个数num1=" NUM1
echo "你输入的值是num1=$NUM1"
案例2:读取控制台输入一个num值,在10秒内输入。
read -t 10 -p "请输入一个数num2=" NUM2
echo "你输入的值是num2=$NUM2"
以上是关于shell基础编程的主要内容,如果未能解决你的问题,请参考以下文章