xshell执⾏结果到⽂本_xshell编程⼩结-osc_iybnxd76的个⼈空
间-OS。。。
初步学完shell脚本编程,通过这篇博客对其⼩结⼀下
shell定义:shell其实是⼀个命令解释器,它的作⽤是解释⽤户输⼊的命令和程序
shell脚本:我们可以在⽂本中输⼊⼀系列的命令、控制语句和变量,这⼀切有机的结合起来就形成了功能强⼤的shell脚本。
⼀.基础语法
1.查看系统脚本解释器
常⽤的是bash解释器
2.使⽤bash解释器执⾏脚本的三种⽅式:
bash xx.sh
sh xx.sh
./xx.sh(注意是否有权限,没有通过chmod 755 xx.sh 或chmod u+x xx.sh 添加权限)
3.shell中的变量
系统变量
$HOME 家⽬录
$PWD 当前⽬录
$SHELL 解释器路径
$USER ⽤户
⾃定义变量
变量名=变量值注意等号两边没有空格
撤销变量 unset 变量名
静态变量
readonly 变量名=变量值(declare -r 变量名=变量值)
静态变量不能撤销,关机或运⾏完脚本⾃动失效
全局变量
变量名=变量值
export 变量名
特殊变量$
$n
n为数字,$0代表该脚本名称,$1-$9代表第⼀到第九个命令⾏参数,第⼗个及以后的参数需要⽤⼤括号包含,如${10}
$#
获取所有输⼊参数的个数
$@ 和$*
$@和$*都表⽰命令⾏中所有的参数,⼀般看来没有区别,for循环打印时都是⼀个个打印,但当⽤双引号分别将他们括起来,"$@"是分裂的,不是⼀个整体(for i in "$@"),⽽“$*”是⼀个整体
$?
最后⼀次执⾏命令的返回状态,如果值为0,证明命令执⾏正确,⾮0命令执⾏不正确
注意:函数中,函数的返回值只能有$?获取,且返回值⼩于等于255。单独⽐较⼤⼩时,结果也是由$?获取
4.运算符
乘除加减
第⼀种⽅式:$((运算式))和$[运算式],运算符之间有没有空格⽆所谓
第⼆种⽅式:`expr 变量1  +-*/% 变量2` 运算符之间有空格 ,要加反引号
条件判断
[ condition ] 条件与两端括号之间有空格
⼤⼩判断
-lt ⼩于
-le ⼩于等于
-ge ⼤于等于
-gt  ⼤于
-eq  等于
-ne  不等于
⽂件类型判断
-f  ⽂件存在且是⼀个常规⽂件
-e ⽂件存在
-d ⽂件存在是⼀个⽬录
⽂件权限
-r 有读的权限
-w 有写的权限
-x 有执⾏的权限
多条件判断
&& 与
|| 或
!逻辑否
5.流程控制
if语句
if [ 条件判断式 ];then
fi
if [ 条件判断式 ]
then
fi
if [ 条件判断式 ]
then
else
fi
if [ 条件判断式 ]
then
elif [ 条件判断式 ]
then
fi
case语句
case $变量名 in
“值1”)
程序
;;
“值2”)
程序
;;
*)
shell脚本返回执行结果
都不是
;;
esac
for 循环
for ((初始值;条件;;变量变化)) do
程序
done
for 变量 in 值1 值2 值3
do
程序
done
while 循环
while  [ 条件判断式 ]
do
程序
done
读取控制台输⼊
read(选项)(参数) 变量
读取输⼊赋值给变量
-p  指⽰读取值时的提⽰符
-t  指定读取值时等待的时间
read相当于python中的input
read -t 7 -p “enter your choice” NAME
6.函数
系统函数
basename函数截取⽂件名称
basename [string/pathname]
basename [string/pathname]  [suffix]
basename 会只保存路径的最后⼀项,只剩⽂件名
dirname 函数
dirname函数与basename作⽤相反,截取内容相反
获取执⾏脚本的路径
pw=$(cd `dirname $0`;pwd)
⾃定义函数
[function] funcname[()]      function ,()可写可不写{
程序
[return xx]
}
返回值由$?获取,返回值(0-255)
注意:必须在调⽤函数地⽅之前,先声明函数
⼀个脚本使⽤另⼀个脚本的函数
.  脚本名
函数名
⼆.shell⼯具
1.cut命令
cut 命令从⽂件的每⼀⾏剪切字节,字符等数据,并将符合的数据输出
cut [选项参数] filename
默认分隔符是制表符
参数 -f 提取第⼏列
-d 分隔符 按照指定分割符分割列
2.sed
sed是⼀种流编辑器,它⼀次处理⼀⾏内容把当前处理的⾏存储在临时缓冲区中,称为模式空间,接着⽤sed 命令处理缓冲区中的内容,处理完成后,把缓冲区中的内容送往屏幕
接着处理下⼀⾏,这样不断重复,知道⽂件末尾,注意⽂件的内容没有被改变,除⾮你使⽤重定向存储输出
sed  [选项参数]  命令 filename
选项参数
-e  有多个命令时使⽤
-n 只显⽰处理过的⾏
命令参数
a 新增
d 删除
s 查并替换
sed -n '1,/内容/'p ⽂件    显⽰第⼀⾏到包含匹配内容的那⼀⾏
sed -n 'num'p  ⽂件    显⽰第num⾏
sed “na  内容” ⽂件名                          在n⾏后加上内容
sed  "s/旧 内容/新内容/g" ⽂件名          替换,g全局替换,否则只换⼀个
sed -e "nd" -e  "s/旧内容/新内容/g"  ⽂件名          删掉第n⾏并替换内容
3.awk
awk是⼀个强⼤的⽂本分析⼯具,把⽂件逐⾏的读⼊,以空格为默认分隔符,将每⾏切开,切开的部分再进⾏分析处理。
命令格式:
awk [选项参数] 'pattern{action1} pattern {action2}.....' ⽂件名
pattern 表⽰awk在数据中查的内容,就是匹配模式 (/内容/  是匹配格式)
action在到匹配内容时所执⾏的⼀系列命令
在开始和结束地⽅加上新的内容

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。