嵌入式系统开发小白学习笔记(8)

上期回顾

嵌入式系统学习笔记(7)

嵌入式系统开发工具(接上期)

shell变量类型

(一)本地变量

1、显示本地变量

example1
#num=2
#echo “this is $numnd”
#num=2
#echo “this is ${num}nd”

第一个不加{}时,输出不出结果。
在这里插入图片描述

example2
要将name的内容多出出"yes"
方法一:#name="$name" yes
方法二:#name=#{name}yes

在这里插入图片描述

example3
在子shell下变量的作用范围
#aa=11
#bash(进入子shell)
#echo $aa
#exit(退出子shell)
#aa=22
#echo $aa

在这里插入图片描述

example
释放本地变量unset
格式:unset 变量名

在这里插入图片描述

(二)环境变量–(系统变量)

1、定义:环境变量在shell脚本执行时,就已经开始定义了。
2、环境变量可以用于所有的用户进程。
3、PS1:主提示符,在特权用户,默认的主提示符是#;在普通用户下,默认的主提示符是美元符号
4、PS1变量的特殊符号
PS1=’[\u@\h\w]\美元符号’
\u:当前用户账号名称
\h:仅取主机名的第一个名字
\w:工作目录名称,仅列出最后一个目录名
\s:提示符,如果是root用户就是#,否则就是美元符号
5、#PATH
(1)决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录
(2)Linux修改PATH变量

若只想对本次登录有效的话
PATH=美元符号PATH<路径1><路径2>…
若想永久有效的话
永久有效在bashrc里面加上上面这句语句

6、export
用export可以把本地变量设置称环境变量
格式:export 变量名
也可以在给变量赋值的同时使用export命令,
export 变量名 = 变量名(若等号两边有空格,则必须用引号括起来)
在这里插入图片描述

设置n1为环境变量,即使进入子shell后,仍可以运行

(三)特殊变量

1、某些变量在开始执行脚本时,就被设定且不在改变,他们就被称为特殊变量,用户只能根据shell使用这些变量而不能重新定义它们,所有特殊变量都是由美元符号和另一个符号组成。
2、$ #:存储shell程序命令参数的个数
3、$ ?:存储shell上一个程序执行的返回值(0表示执行成功,非0表表示错误)
4、$ [1-n]:存储[1-n]个命令行参数
5、$ 0:存储shell程序自己的名称
6、$ *:存储shell脚本所有的行数
7、$ $ :存储shell脚本的进程号(pid)
在这里插入图片描述
shift命令
1、可以移动命令行参数。运行shift后,把每一个参数向左移动一个位置,$ 2 $ 3 …依次变为$ 1 $ 2…原来的$ 1丢弃
在这里插入图片描述

特殊符号

1、引用符号
在bash中,许多字符有特殊含义如果忽略某些字符含义可以使用一种“引用”通知shell暂时护略被引用字符特殊含义,将其作为普通字符处理。
~:用户主目录
`:(不会被双引号剥夺含义)命令替换符,跟引用作用相反,反引号内的字符被shell解释命令符,在执行shell时,首先执行该命令,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
#:注释作用
$:变量替换的代表符号
&:将命名在后台执行
*:通配符,代表任何字符
(:用括号可以将一系列的指令组成指令群组
):用括号可以将一系列的指令组成指令群组
:转义符(不会被""剥夺含义)
|:管道
?:代表任何单一字符
<:输入重定向
.>(右尖括号):输出重定向
':不具有变量置换功能
":具有变量置换的功能
/:路径
;:命令分隔符
2、在shell中的三种引用符号
转义符:\

\放在shell特殊字符之前,则shell忽略该字符的特殊含义,用这种方式时,必须在每一个欲忽略其特殊含义的特殊字符加\字符

单引号:’

将字符放在一队单引号之间,则单引号内所有的字符的特殊含义都被忽略,只作为普通字符解释

双引号:"

双引号用括住的内容,将被视为单一字串。为防止通配符扩展,但允许变量扩展。

猜你喜欢

转载自blog.csdn.net/m0_52251623/article/details/114960511