linux - shell脚本编程
一:第一个shell脚本程序
介绍
shell脚本程序,使用shell语言编写的程序(shell过程,shell脚本,脚本)由shell脚本解释.
容易编写,修改和调试,无需编译,由shell解释执行,是一个文本文件,一次执行一条命令
当命令执行完or出错,shell停止执行(.sh结尾)
shell的注释:#
比如:
hello.sh:
脚本的执行:
-1:我们可以使用sh hello.sh or bash hello.sh or fish hello.sh来执行(启用新shell进程)
-2: . hello.sh or source hello.sh(在当前的shell进程解释执行)
-3:chmod u+x hello.sh 使用./hello.sh执行(将脚本转换为可执行文件)
(之所以加入./:不叫回去指定PATH的路径找,加了就说明在当前的路径)
比如:exit.sh:
exit
使用source exit.sh就是退出当前进程
如果是sh exit.sh 就没有用
二:脚本程序变量
变量:
计算机语言中存储和表示值的抽象概念,我们需要去关注他的命名,类型,存储空间,生存周期等等
变量的定义:
变量=变量值 (不要有空格) 而且不支持数据类型,默认转换为字符串
name= “前name 后name”
age =19
可以复制一个命令的结果
eg:DATE=`date`
变量的生命周期:
知道进程结束or unset 变量
使用变量:
需要$
比如:
a=1
b=a
echo $b #会显示 a
b=$a
echo $b #会显示 1
三:字符串拼接
直接放在一起就好了
first_sentence = “i am ”
name = my_name
second_sentence =”,nice to meet you!”
sentence = ${first_sentence}-${name}-${day} #这里的{}只是为了让逻辑清晰,可以不要
echo sentence
#显示i am my_name,nice to meet you!
四:算数运算
内部没有支持算数运算的东西:
a=1
b=2
c=$a+$b
echo c #1+2
-1:expr:
算术运算符:+ ,- ,\*, /, \%
eg:(注意,符号两边要有空格
expr 1 + 2 #3
expr -1 - 2 #-3
expr 4 / 3 #1
所以就可以:
x=10
x=`expr $x + 1`
echo $x #11
-2:也可以let
let x=x+1 //把表达式当做一个参数 ,所以这里面=,+的两边都没有空格
x=100
let x=x+100
let y=x*2
echo %y #400
-3:(())
(()) #支持 a++,c-- ,a*=2 !!!!!
x=100
((x=x+100))
echo x #200
((x++,a=x))
echo $a #201 ,
五:脚本程序的参数输入
-1:命令行输入:
./xxx.sh 参数1 参数2 参数3
到时候再程序里面直接使用$1....就可以了
还有一些特殊的参数:
(注意:第10个及以后的参数需要用大括号括起来,eg: ${10})
eg:hello_pro.sh:
echo ”hello,$1”
./hello_pro.sh “world!” #hello,world!
可以使用 set来将自己的参数按顺序赋值给位置参数
-2:交互式输入:
read a b c #等待用户输入3个变量
如果输入的变量多于3个,则>=3个之后的全部赋值给最后一个
如果输入的变量少于3个,则,有几个前面的就读几个
六:条件语句
字符串的判断:
下面的 [ 条件表达式 ] 可以是 test 条件表达式
数值的判断操作符:
文件检测:
逻辑表达式可以使用逻辑运算法来进行组合:
-a:与
-o:或
! :非
单分支:if - then -fi
注意:if then 不能放在同一行,如果需要,则用; 在 ] 和 then中间分隔
双分支:if - then - else -fi
多分支: if- then -elif -then ...... fi
七:分支语句
case:通过变量值匹配与定义的模式来执行对应的命令块
(注意是;;截止一个选项,同时其他的选项表示为 *)
八:循环语句
1-:for(成立则执行)
variable 从头到尾取list的值,每个值执行一次
这里的取值列表可以是:
----1:列出所有的成员
for filename
in file1 file2 file3
do
xxx
done
----2:等差数列 (start,end,步长) / seq start 步长 end
for i in {1..100} #默认为1
do
xxx
done
----3:命令的结果
for filename
in `cat names`
do
xxx
done
2-:while(成立则执行)
while [ condition ]
do
xxxxx
done
3-:until (不成立则执行)
until [ condition ]
do
xxx
done
可以使用continue /break
九:程序执行状态返回
shell的内部命令,用于立即终止程序
exit [n]
n是退出的状态:
0 :退出成功
else:退出失败,不同的值对应不同的错误类型
\