版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xh_xinhua/article/details/58597830
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
#! /bin/sh
date
a=10;
b=20;
sum_val=`expr $a + $b`
echo "sum_val is a+b= $sum_val"
sum=`expr 2 + 2` #完整的表达式要被``包含
echo "sum is $sum"
echo "hello world!"
两点注意:
1、表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
2、完整的表达式要被 ’ ’ 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
#! /bin/sh
a=10;
b=20;
sum=`expr $a \* $b` #乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
echo "sum a*b = $sum"
if [ $a != $b ]
then
echo "true"
else
echo "false"
fi
#if...then...else...fi 是条件语句
case … esac 与其他语言中的 switch … case 语句类似
case 值 in
模式1)
command1
command2
command3
;;
模式2)
command1
command2
command3
;;
*)
command1
command2
command3
;; # ;; 与其他语言中的 break 类似
esac
#! /bin/sh
echo "Input a number between 1 to 3"
read num
case $num in
1) echo "you input one"
;;
2) echo "you input two"
;;
3) echo "you input three"
;;
*) echo "you input other number"
;;
esac
for循环一般格式为:
for 变量 in 列表
do
command1
command2
...
commandN
done
列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。
#! /bin/sh
echo "it is a test!"
for loop in 1 2 3
do
echo "the val is $loop"
done
##########################
# 运行结果:
# # ./ss.sh
# it is a test!
# the val is 1
# the val is 2
# the val is 3
##########################
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
while command
do
Statement(s) to be executed if command is true
done
### 命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。###
如果COUNTER小于5,那么返回 true。COUNTER从0开始,每次循环处理时,COUNTER加1。运行上述脚本,返回数字1到5,然后终止。
#! /bin/sh
num=0
while [ $num -lt 5 ] # -lt 表示左边小于右边 # #取的是num的值,要加 $ #
do
num=`expr $num + 1` #取的是num的值,要加 $
cat /proc/msp/tuner #获取5次tuner 信息
echo "$num" #取的是num的值,要加 $
sleep 2
done
########################
#运行结果:
# 1
# 2
# 3
# 4
# 5
########################
until 循环执行一系列命令直至条件为 true 时停止。
#! /bin/sh
num=10
#until [ ! $num -lt 10 ] ## !(感叹号)与 $num有一个空格
until [ $num -lt 8 ] ## !(感叹号)与 $num有一个空格
do
echo "num = $num"
#num=`expr $num + 1`
num=`expr $num - 1`
done
#######################
# 运行结果
# num = 10
# num = 9
# num = 8
#######################
let 用于计算整数表达式的值
#! /bin/sh
######### 1 #########
num=10;
while [ $num -gt 5 ];
do
echo "num = $num";
let num=$num-1; # num=$num-1 不用空格
done
#! /bin/sh
######## 2 ########
num=10
while [ $num -gt 5 ]
do
echo "num = $num"
num=$(($num-1))
done
#######################
# 1和2的运行结果
# num = 10
# num = 9
# num = 8
# num = 7
# num = 6
#######################
break命令允许跳出所有循环(终止执行后面的所有循环)
脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,就要使用break命令。
#! /bin/sh
while :
do
echo "Input a numbei between 1 to 5"
read num
case $num in
1|2|3|4|5) echo "your number is $num"
;;
*) echo "your number is not between 1 to 5"
break;
echo "your number is $num"
;;
esac
done
######################################
# 运行结果:
# Input a numbei between 1 to 5
# 6
# your number is not between 1 to 5
# #
######################################
######################################
# 无break的运行结果:
# Input a numbei between 1 to 5
# 6
# your number is not between 1 to 5
# your number is 6
# Input a numbei between 1 to 5
######################################
### continue命令仅仅跳出当前循环,(第二句)echo "your number is $num"永远不会被执行###
#! /bin/sh
while :
do
echo "Input a numbei between 1 to 5"
read num
case $num in
1|2|3|4|5) echo "your number is $num"
;;
*) echo "your number is not between 1 to 5"
continue;
echo "your number is $num"
;;
esac
done
######################################
# 运行结果:
# Input a numbei between 1 to 5
# 6
# your number is not between 1 to 5
# Input a numbei between 1 to 5
######################################
Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本
扫描二维码关注公众号,回复:
3881448 查看本文章
###### main.sh ########
#! /bin/sh
num=5
while [ $num -gt 1 ]
do
num=$(($num-1))
echo "num = $num"
cat /proc/msp/tuner >> ./test.txt
done
. ./subscript.sh ##使用点号(.),但是注意点号(.)和文件名中间有一空格##
######### subscript.sh #########
#! /bin/sh
echo "hello world!"
####################
# 运行结果:
# num = 4
# num = 3
# num = 2
# num = 1
# hello world!
####################
##重定向输出到 /mnt/info.txt文件内##
filename=/mnt/info.txt
while [ 1 ]
do
date >> $filename;
cat /proc/meminfo >> $filename;
sleep 2;
done