Shell编程

shell是一种命令行解释器,用于接受应用程序或用户命令,调用操作系统内核

其次它还是一种编程语言,易编写,已调试,灵活性强

脚本解析器:sh、bash、./ 
sh本质上调用的是bash
使用./的话要给脚本赋予执行的权限
shell中的变量
系统变量:$HOME $SHELL $PWD $USER
普通变量 默认是字符串类型 无法直接进行计算
变量名=变量值(中间不允许有空格)
例如:A=1
echo $A
unset A(清空)
静态变量readonly B=3(不能撤销unset)

把变量提升为全局变量export B
供shell程序使用
特殊变量
$n $0:代表脚本的名称 [1-9]代表1-9个参数 10以上的参数用${10}表示

$#:用来打印输入参数的个数

$*:表示命令行中所有的参数 $*把所有的变量当成一个整体
$@:表示命令行中所有的参数 但是$@把每个变量分区对待

$?:用来判断最后一条命令是否执行成功 0表示成功 非0表示失败
运算符 (注意:\*表示乘)
$((运算表达式))或者$[运算表达式] 注意不能有空格
expr 运算表达式  (注意 表达式之间要存在字符)
例如:expr `expr 2 + 3` \* 4
条件判断
[ condition ] 两端要有空格
成立为true 不成立为false
常用的判断条件
整数之间的比较:
等于(=) 小于(-lt) 大于(-gt) 等于(-eq) 大于等于(-ge) 小于等于(-le) 不等于(-ne)
按照文件权限进行判断:
-r可读 -w可写 -x可执行
按照文件类型进行分类:
-f文件存在并且是一个常规文件
-e文件存在
-d文件存在并且是一个目录
if判断
if [ condition ]:then
	程序块
fi
或者
if [ condition ]
	then
		程序块
fi
if和[]之间有空格 [ condition ]两端要存在空格
case语句
case 变量 in
"变量值")
	执行该语句
;;
"变量值")
	执行该语句
;;
*)
	都不满足 执行该条语句
esac
for循环
for((变量;变量满足条件;变量累加))
do
	程序块
done

或者

for i in 值1 值2 值3......
do
	代码块
done
while循环
while [ condition ]
do
	代码块
done
read读取控制台的输入
read -t 7 -p "please input data" NAME
从控制台上输入名称赋值给NAME变量
函数
1、系统函数:
basename:用来截取绝对路径文件名称
basename /mytest/data/shtest/read.sh
read.sh
basename /mytest/data/shtest/read.sh .sh
read
dirname:用来截取文件的路径
dirname /mytest/data/shtest/read.sh
/mytest/data/shtest

2、自定义函数:
function 函数名(参数)
{
	函数体
}
调用函数直接写名字 后边直接跟参数
注意:函数只能先定义 在调用
shell工具
1、cut:截取文件
-d 表示以何种格式截取 (\t " " ,等)
-f 表示截取第几列
例如:截取$PATH路径中第五个:后的路径
echo $PATH | cut -d : -f 6-

2、sed:是一款流编辑器 一次处理一行
-e:选项参数 当有多个命令时可以使用多个-e
命令参数:
a:新增
d:删除
s:查找并替换
例1:在第二行数据后边新加一行数据mei nv
sed "2a mei nv" sed.txt
例2、删除包含wo的行
sed "/wo/d" sed.txt
例3、将文件中的wo替换成ni
sed "s/wo/ni/g" sed.txt (注意g表示全局替换)
例4、删除第二行并将wo替换成ni
sed -e "2d" -e "s/wo/ni/g" sed.txt

3、sort:数据进行排序
-t:以指定的格式进行分割
-n:按照数值大小进行排序
-r:倒叙
-k:指定需要排序的列
例如:以:进行分割 以2列进行倒叙排序
sort -t : -nrk 2 srot.txt

 

posted @   先生小凯  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示