嵌入式c累积之shell脚本

本文介绍了嵌入式C开发中的Shell脚本使用,包括环境变量、位置变量、算术运算、关系运算、逻辑运算、文件测试及字符串处理等内容。通过实例演示了命令重定向、管道和变量的使用。还讨论了Shell脚本中的错误处理,如'bad interpreter'问题,以及如何设置终端字体颜色。最后提到了命令的执行顺序和shell通配符的应用。
摘要由CSDN通过智能技术生成

​ 用心,再用心,看了坚持了17年高考的唐尚珺,终于准备读大学了。感慨良久,嵌入式也是一条长路呀。

前置内容

1. 第一个shell,以下都是在终端直接输入

vim hello.sh,然后在hello.sh中输入

#!/bin/bash 
#shell 特定的开头格式,表示该脚本采用哪个Shell解释执行,如果没有此句表示采用默认的Shell执行脚本
echo -e "my ljun\n"
# -e开启转义  #除第一行外,其他都是注释 ,注释正确的话,在终羰下会显示为绿色。      #要顶格写                                          

2. 变量练习

Shell 脚本是一种弱类型语言,在脚本当中使用变量不需要也无法指定变量的“类型”。缺省状态下,Shell 脚本的变量都是字符串,即一连串的单词列表。共有3种变量:用户自定义变量,环境变量、内部变量

#!/bin/bash 
count=1    #用户自定义变量
echo $count
name="liuj"   #赋值号右边只有一个单词,如果是词组必须用双引号括起来,并且,赋值号两边都没有空格
echo $name  # 变量引用
echo $HOME
#HOME 大写是一个环境变量 表示home路径
unset name  #unset删除变量name
echo ${name}

环境变量

主要的环境变量有:
$LOGNAME  用户登录名
$LANG  语言设置
$HOME  用户自己的主目录
$PSI     Shell命令行提示符
$HOSTNAME   主机名
$PS2  命令未完成输入时,再输入时的提示符
$SHELL    Shell路径
$MANPATH   man命令的搜索路径
$PATH   命令执行时的搜索路径

export 导出一个环境变量练习

export表示让设置的环境变量立刻生效。清除用 unset [变量名]

#!/bin/bash
# export 导出一个环境变量
export MY_NAME="liuj"
env | grep MY_NAME

env  #可显示当前用户的所有环境变量
set
#env命令和set命令的区别是,set命令可以查看所有变量,而env命令只能查看环境变量

位置变量,也叫内部变量,由系统提供,不可修改

# 命令行变量
$0   与键入的命令行一样,包含脚本文件名
$1,$2,……$9  分别包含第一个到第九个命令行参数
$#   包含命令行参数的个数  ### 可以理解为数组的下标,是实际的参数的个数,

$@   包含所有命令行参数:“$1,$2,……$9$*   与上面命令一样

$?   包含前一个命令的退出状态,返回0,表示上一条命令执行正确,其他任何值都表明有错误
$$   包含正在执行进程的ID号
$!   后台运行的最后一个进程的ID号
# 系统预定义的变量
echo $PATH
echo $PWD

新建一个.sh文件,输入
#!/bin/bash
echo 正在执行脚本名称是$0
echo 第一个参数age=$1
echo 第二个参数是address="$2"
echo 全部的参数是 $*

然后在终端输入:xx.sh 12 shandong
会显示出这行命令行的参数。
位置移动命令shift [n],每执行一次shift,实参就会向左移动一位,了解下,不太常用

大体的意思就是说,xx.sh a b c ;shift 2 #执行后结果就是只有实参c了

竖杠(管道)

将一个命令所达成的结果,给到另一个命令进行再加工,如ls -l | wc ls -l 负责收集当前目录
下的文件的信息,然后将这些文件名作为结果输送到管道,wc 这个命令接着从管道中把他们读取出来,并计算出行数、单词个数和总字符数。

><(重定向)

ls -l 1>a.txt,# ls -l 命令原本要输出到1号描述符,重定向到a.txt中 注:0号描述符是标准输入,1号是标准输出,2号是标准出错
echo 0<b.doc#打印b.doc内容,将标准输入重定向到b.doc
echo "hello" 1>&2 #在重定向符的右边,标准输入输出设备文件描述符要写成&0,&1,&2.
cat name#从标准输入中获取信息,并直接写入到name中
cat >name<a.txt#相当于把a.txt的内容作为输入,然后> 输出到name中
ls -l >a.txt#使用>会先判断右边的a.txt是否存在,若存在会删除再创建并清空,使用>>则是判断右边文件是否存在,如果存在就追加信息,否则创建

3. 算术运算 expr主要用于进行简单的整数运算

#!/bin/bash
#expr 12 +5\*3
#\ *表示去掉*号的元字符含义
num=9
sum=`expr $num \* 6`
#`是1旁边的那个反撇号,表示引用命令的运行结果
echo $sum
a=5
b=7
#加法
val=`expr $a + $b`
#$a 与+间要有个空格,也就是运算符与数字之间要用空格
echo "$a</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

guangod

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

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

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

打赏作者

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

抵扣说明:

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

余额充值