5. shell中其他值得关注的知识点

本文内容来自对 《朱有鹏嵌入式linux核心课程》学习总结

shell中其他值得关注的知识点

1. case语句

  • shell 中的 case 语句和 C 语言中的 switch case语句作用一样,格式有差异。

  • shell 中的 case 语句天生没有 break,也不需要break,和C语言中的switch case不同。shell中的case默认就是匹配上哪个执行哪个,不会说执行完了还去执行后面的其他case(就好像shell中的case语言默认都带了break)。

    示例

    #!/bin/sh
    
    var=1
    case $var in
    1) echo "1" ;;
    2) echo "2" ;;
    esac
    

    执行结果

    root@book-virtual-machine:/mnt/hgfs/windows/study-notes/嵌入式/uboot移植/1.补基础之shell和makefile# ./helloworld.sh 
    1
    

2. 调用shell程序的传参

  • C 语言中可以通过main函数的argcargv给程序传参

  • shell程序本身也可以调用时传参给他。在shell程序内部使用传参也是使用的一些特定符号来表示的,包括:
    $0, $1, $2... 则依次表示传参的各个参数。

    C 语言:./a.out aa bb cc argc=4, argv[0]=./a.out, argv[1] 是第一个有效参…

    shell: source a.sh aa bb cc $#=3,
    $0 是执行这个shell程序的解析程序的名字,$1是第一个有效参数的值,$2是第2个有效参数的值…

    注意shell中的很多语法特性和 C 语言中是相同的,也有很多是不同的。(需要多做笔记,多总结,多写代码)


    示例

    #!/bin/sh
    
    echo $#
    echo $0
    echo $1
    echo $2
    echo $3
    

    执行结果

    root@book-virtual-machine:/mnt/hgfs/windows/study-notes/嵌入式/uboot移植/1.补基础之shell和makefile# ./helloworld.sh aa bb cc 
    3
    ./helloworld.sh
    aa
    bb
    cc
    

3. while 循环和 case 语言和传参相结合

  • shell中的break关键字和c语言中意义相同(都是跳出)但是用法不同。因为shellcase语句默认不用break的,因此在shellbreak只用于循环跳出。所以当while中内嵌case语句时,case中的break是跳出外层的while循环的,不是用来跳出case语句的。
  • shell中的$#, $1等内置变量的值不是不可变的,而是可以被改变的,被shift指令改变。shift指令有点像左移运算符,把我们给shell程序的传参左移了一个移出去了,原来的$2变成了新的$1,原来的$#少了1个。


    示例
    #!/bin/sh
    
    echo $# $0 $1 $2 $3
    shift
    echo $# $0 $1 $2 $3
    
    执行结果
    root@book-virtual-machine:/mnt/hgfs/windows/study-notes/嵌入式/uboot移植/1.补基础之shell和makefile# ./helloworld.sh aa bb cc
    3 ./helloworld.sh aa bb cc
    2 ./helloworld.sh bb cc
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzg2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值