小小糖 发表于 2019-2-25 15:35:00

shell脚本编程

shell脚本语言是解释性语言,C语言是编译型语言。shell脚本是shell命令的有序集合。

shell编程基本步骤

建立shell文件;包含任意多行系统命令或shell命令的文本文件
赋予shell文件执行权限,用chmod命令修改执行权限
执行shell文件;直接在命令行上调用shell程序(在PATH路径中没有当前文件的话 直接用 ./执行)
shell变量

shell不支持数据类型,将任何赋值给变量的值都解释为字符串,因此无需声明,直接赋值
count=1 //变量直接赋值,等号两边不加空格
echo count //变量调用时要带 $ 符号指示变量
echo $count 变量种类

用户自定义变量

删除变量 unset命令
位置变量即命令行参数

$0:与键入的命令行一样,包含脚本文件名
$1,$2,······$9:分别包含第一个到第九个命令行参数
$# :包含命令行参数的个数
$@ :包含所有命令行参数
$? :包含前一个命令的退出状态
$ *: 包含所有命令行参数
$$ :包含正在执行进程的ID号

预定义变量
环境变量
export ;env查看环境变量
常用环境变量        说明
HOME        /etc/passwd文件中列出的用户主目录
IFS        Internal Field Separator,默认为空格,tab及换行符
PATH        shell搜索路径
PS1、PS2        默认提示符($)及换行提示符(>)
TERM        中断类型,常用的有vt100,ansi,vt200,xterm等

功能语句

说明性语句:以#号开始,按行计
功能性语句:任意的shell命令、用户程序或其它shell程序
结构性语句:条件测试语句、分支语句、循环语句、循环控制语句
常用功能性语句

read 从标准输入读入一行,并赋值给后面的变量变量数和输入之间的匹配
expr 整数运算 A=`expr 3 + 5` 命令结果赋值给变量时要进行转换,且变量赋值不应有空格,运算表达式应有空格
test 测试对象:

字符串:常用命令参数
表达式        含义
s1 = s2        测试两个字符串的内容是否完全一样
s1 != s2        测试两个字符串的内容是否有差异
-z s1        测试s1字符串的长度是否为0
-n s1        测试s1字符串的长度是否不为0

整数:常用命令参数
表达式        含义
a -eq b        测试a与b是否相等
a -ne b        测试与b是否不相等
a -gt b        测试a是否大于b
a -ge b        测试a是否大于等于b
a -lt b        测试a是否小于b
a -le b        测试a是否小于等于b
文件属性:常用命令参数

表达式        含义
-d name        测试name是否为一个目录
-e name        测试一个文件是否存在
-f name        测试name文件是否为普通文件
-L name        测试name文件是否为符号链结
-r name        测试name文件是否存在且为可读
-w name        测试name文件是否是否存在且为可写
-x name        测试name文件是否存在且为可执行
-s name        测试name文件是否存在且其长度不为0
f1 -nt f2        测试文件f1是否比文件f2更新
f1 -ot f2        测试文件f1是否比文件f2更旧
echo $? 输出上条命令的结果


qqq911 发表于 2019-4-16 11:03:40

感谢分享

Miss_love 发表于 2020-12-25 16:11:34

感谢分享
页: [1]
查看完整版本: shell脚本编程