Sundy嵌入式底层开发课程笔记 --shell
来源:互联网 发布:男装店淘宝 编辑:程序博客网 时间:2024/05/17 01:11
Shell脚本
课程目标:
熟悉shell脚本的编写规则
看懂复杂的shell脚本
重点难点:
自我查询shell脚本的高端应用
#!指定sh解释程序
#;注释
关于空格, =不加空格,运算符要加空格,如果记不住就改为:=不加空格,其它都加。
用户自定义变量
变量类型只支持字符串,不支持整形,字符,浮点;
等号前后不要有空格
一般变量命名用全大写
unset命令删除变量赋值
readonly标定只读变量
export为指定global变量
shell的算术运算:
m=$[m + 1];m=`expt$m+1`;let m= m+1;m=$((m+1))
关于算数优先级,如何考虑!
预定义变量
$0与键入的命令行一样,包含脚本文件名
$1,$2,…,$9分别宝行第一个到第九个命令行参数
$#命令行参数的个数
$@所有命令行参数
$?前一个命令的退出状态
$*所有命令行参数
$$正在执行的进程ID号
环境变量
HOME:当前用户的主目录
PATH:shell搜索路径
TERM:终端程序名称
UID当前用户的识别字,取值是由数位构成的字串。
PWD当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化
PS1主提示符,在特权用户下,默认的主提示符是#,在普通用户下,默认的主提示符是$。
PS2在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入”\”然后回车,或者当用户按回车键shell判断出用户输入的命令没有结束时,就显示这个辅助提示符,提示用户继续输入命令的其余部分,默认的辅助提示符是>
Shell语句
shell内部命令
echo
exec
exit
read 从标准输入读取一行并且赋值给后面变量
read var
read var1 var2 var3
注意:当读取数量和变量数量不一致的时候
expr
常见的算术运算
+,-,\*,/,%
注意:运算符左右两边都需要有空格,否则会视为字符串连接
test
测试结果也常常用来作为判断条件及结果
test “$anser” = “yes”
test $num –eq 18
test –d temp
可以用[]代替test,但需要左右留一个空格,比如
[“$anser” = “yes” ]
if [“$anser” = “yes”]
字符串测试
s1 = s2
s1 ! = s2
-z s1 测试字符串s1长度是否为0
-n s2 测试字符串s1长度是否不为0
2)数值测试
-eq等于则为真
-ne不等于则为真
-gt 大于则为真
-ge大于等于则为真
-lt 小于则为真
-le 小于等于则为真
3)文件测试(加粗为重要)
-e文件名如果文件存在则为真
-r文件名如果文件存在且可读则为真
-w文件名如果文件存在且可写则为真
-x文件名如果文件存在且可执行则为真
-s文件名如果文件存在且至少有一个字符则为真
-d文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-c文件名如果文件存在且为字符型特殊文件则为真
-b文件名如果文件存在且为快特殊文件则为真
Shell结构性语句
条件:
if…then…fi
if[exp]
then [command]
fi
if[exp]
then [command]
else [command]
fi
case …esac
case [var] in
[param1])
[command]
…
;;
[param2])
[command]
…
;;
[paramn])
[command]
…
;;
esac
注意:var只能是字符串型变量。
循环:
for…do…done
for[var] in [list]
do
[command]
done
while…do…done
while[exp]
do
[command]
Done
until…do…done
until[exp]
do
[command]
done
break,continue
shell函数
定义格式
function_name()
{
conmmand1
…
conmmandn
}
2)function function_name()
{
conmmand1
…
conmmandn
}
调用函数
[var]=`function_name[arg1,arg2…]`
Echo $?
区分差别
- Sundy嵌入式底层开发课程笔记 --shell
- Sundy嵌入式底层开发课程笔记1 --shell命令机制
- Sundy嵌入式底层开发课程笔记3 --磁盘管理常用命令 .
- Sundy嵌入式底层开发课程笔记5 --系统及其它
- Sundy嵌入式底层开发课程笔记6 --网络配置管理
- Sundy嵌入式底层开发课程笔记 --APT命令
- Sundy嵌入式底层开发课程笔记2 --linux命令类库机制及常用命令
- Sundy嵌入式底层开发课程笔记 --linux服务器的安装及配置
- Sundy嵌入式底层开发课程笔记 --Vi的设计思想及使用
- Sundy嵌入式底层课程-13年
- Handle笔记(Sundy课程)
- Service笔记(Sundy课程)
- Android嵌入式底层开发课程详解
- Sundy Android高级应用课程
- Sundy Android高级应用课程
- Sundy Android高级应用课程
- 嵌入式底层软件开发学习系列之二计算机相关课程
- 嵌入式开发学习课程
- 有关C++中的数组的知识
- Melanjutkan pembahas
- 测试
- Redis常用命令以及代码实例
- SAP 时间戳
- Sundy嵌入式底层开发课程笔记 --shell
- 建造SAP Fiori部署
- jmxtrans梳理
- (C++) 无重复随机数 ——o(n) .1
- Servlet中用ZXing生成条码二维码并输出到web页面
- Maven学习记录之maven基本操作命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse中创建maven工程:
- opencv2.4.10+VS2010配置
- js null 空字符 undefined
- 使用AD_DD 工具注册表和表列到应用