嵌入式学习--LinuxDay03

shell脚本

1.1功能性语句

1.1.1说明性语句

#开头

#注释

1.1.2功能性语句

1read

功能标准输入一行赋值后面变量

格式: read VAR1 VAR2 VAR3

读入第一个字符串VAR1第二个VAR2剩下所有VAR3

read -p "提示语句" 变量名 可以将提示语句输出同时输入变量

2expr

格式 expr 表达式

算术运算符expr主要用于简单整数运算加(+),减(-)乘( \*) 除 (/)取余 (%)

例:

expr 12 + 5 \* 3

注意:

1)表达式符号之间必须用空格间隔

2)expr引用变量必须$

3)expr自带打印功能

4)使用乘号\* 小括号\( \) 需要转义

5)把expr的结果赋值给变量需要命令置换符

6)expr不能进行++ -- 操作

#!/bin/bash
VAR1=5
VAR2=10
echo $VAR2
VAR2=`expr \( $VAR1 + 5 \) \* 2`
echo $VAR2

练习通过expr实现变量自加运算

a++ == a=a+1

#!/bin/bash
VAR1=5
VAR1=`expr $VAR1 + 1`
echo $VAR1

练习2:计算表达式值a*b+c-d/b,a=2,b=3,c=15,d=18

要求:

1)从终端读入4个数a,b,c,d

2)进行运算

3)打印结果输出到终端

3) test

字符串 整数 文件属性

a)字符串

$s1 = $s2 测试两个字符串是否完全一样

$s1 != $s2 测试两个字符串是否一样

-z $s1 测试s1长度是否0

-n $s1 测试s1长度是否不为0

b)整数测试

$a -eq $b 测试a是否等于b equal

$a -ne $b 测试a是否不等于b

$a -gt $b 测试a是否大于b greater than

$a -ge $b 测试a是否大于等于b

$a -lt $b 测试a是否小于b less than

$a -le $b 测试a是否小于等于b

#!/bin/bash
NUM=10
test $NUM -eq 1
echo $?        #非0
test $NUM -ne 10
echo $?        #非0
test $NUM -le 15
echo $?        #0
test $NUM -gt 5
echo $?        #0

c)文件属性测试

测试name 是否一个目录文件 -d name

测试name 是否一个普通文件 -f name

测试name 是否存在 -e name

1.2结构性语句

1.2.1if语句

1基本结构

if 条件

then

        命令表1

else

        命令表2

fi

#!/bin/bash
read N
if test $N -eq 10
then
    echo "="
else
    echo "!="
fi


2)分层结构

if 条件1

then

        命令表1

elif 条件2

then

        命令表2

else

        命令表3

fi

3嵌套结构

if 条件1

then

        if 条件2

        then

                命令表1

        else

                命令表2

        fi

else

        命令表3

fi

4)判断语句其他格式

if [ 条件 ]

then

        命令表1

else

        命令表2

fi

注意

  1. if 和 fi是条件语句的括号,必须成对使用
  2. 命令表中的命令可以一条也可以多条

注释整段代码

if false

then

fi

练习:从终端输入3个整数;从小到大排序

1.2.2case语句

格式

case 变量 in

模式1

        命令表1

        ;;

模式2)

        命令表2

        ;;

        。。

*

        命令表n

        ;;

esac

注意:

1)case语句只能检测字符串变量

2)命令表以单独的;;结束,退出case语句

3)模式n通常写为*,表示其他所有的模式

4)case匹配项中可以存在多个模式,每种模式之间|隔开

1.2.3for循环

格式

for 变量名 in 单词

do

        命令表

done

变量依次从单词表中读取各个单词,每取一次单词,就执行一次循环体中的命令表,循环次数由单词表中的单词数决定,命令表中的命令可以一条,也可以是由分号或换行符分隔开的多条。

for语句的几种基本书写格式:

1)for i in 1 2 3 4 5

do

....

done

变量i从单词表中取值

2)for i

do

...

done

变量i从命令行取值,可以省略in 单词表

3)for i in {1..10}

do

...

done

变量i从1-10取值

4)for ((i=0;i<10;i++))

do

...

done

书写格式类似于c语言

#!/bin/bash
#1)
# for i in 1 2 3 4 5
# do
#     echo -n "$i  "
# done
# echo 

#2)
# for i 
# do
#     echo -n "$i  "
# done
# echo 

#3)
# for i in {1..10}
# do
#     echo -n "$i  "
# done
# echo 

# 4)
for ((n=1;n<=10;n++))
do 
    echo -n "$n  "
done
echo 

练习:实现1-10求和

1.2.4while循环

格式

while 命令表达式

do

        命令表

done

输出1-10

1.2.5循环控制语句

break n :结束n循环

continue n:结束n本次循环继续下一次循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值