shell编程

1、环境变量
1) 定义和取消环境变量

2)重要的环境变量
PWD:当前路径
OLDPWD:上一次的路径

PATH:任何在PATH中的可执行文件都可以在Linux的任何目录下直接执行

HOME:当前用户的根目录,一般非根用户的HOME目录存放在/home下,根用户的HOME目录在/root下。

SHELL:默认的Shell值,一般是/bin/bash,表示当前的Shell是bash Shell。
USER:用户名
UID:用户ID
PPID:当前进程的父ID

4)位置参数
# 传递给shell脚本的参数数量*(或 @)shell 1开始的)
$$ 当前脚本运行的进程号
$? 当前脚本执行的状态,0表示OK,非0不OK
5)Shell脚本的引用
全引用:单引号’’ 中除了单引号外的所有的字符都是字面意义。

部分引用:双引用”” 中除了美元符号($)和反引号(`)以及反斜线外,其他都是字面意义。

注意:如果系统有多个单引号,按照输入的先后顺序匹配。(双引号也类似)
6)命令替换
有两种方式:
其一:用反引号(注意和单引号不是一样的哦)
其二:用$()
退出、测试、判断及操作符
1、 退出状态

状态值
含义
0
运行中未遇到任何问题
1-125
运行失败,脚本命令、系统命令错误或参数传递失败
126
找到了该命令,但无法执行
127
没找到该命令

128
命令被系统强制结束

2、 测试结构
其一:Test expression
其二:[ expression ]
注意:1、返回0表示OK, 返回非0表示不OK。(与C语言相反)
2、注意第二种结构expression前后各有空格!

对于整数比较,格式为:
Test “exp1” 符号 “exp2”,其中符号有

exp1 -eq exp2
相等
exp1 -ge exp2
大于等于
exp1 -gt exp2
大于
exp1 -le exp2
小于等于
exp1 -lt exp2
小于等于
exp1 -ne exp2
不等于

注意:1、整数比较运算符不适合于浮点数、字符串等。
2、对于整数常量,0表示8进制,0x表示16进制,也可使用num#表示进制,譬如8#表示8进制,16#表示16进制,2#表示2进制。

对于字符串比较,格式为:
string
同-n string
-n string
String为空串则返回非0,非空串返回0
-z string
String为空串则返回0,非空串返回非0
string1=string2
字符串相等返回0,否则返回非0
string1!=string2
字符串不相等则返回0,否则返回非0
注意:1、这里非0,对于字符串比较来说是1。
2、注意字符串的空格,大小写对字符串比较有影响。
3、在Shell中,字符串赋值和整数赋值没有区别。

对于文件操作符,格式为:
-d file
file是目录则返回0
-e file
file 存在则返回0
-f file
file是普通文件则返回0
-r file
file 是进程可读文件则返回0
-w file
file 是进程可写文件则返回0
-x file
file 是进程可执行文件则返回0
-s file
file 文件长度非0则返回0
-L file
file 是符号化链接则返回0

对于逻辑运算符,格式为:
!exp

exp 为假,返回0
exp1 -a exp2

exp1、exp2同时为真,则返回0,不过若exp1为假,则不再计算exp2
exp1 -o exp2

有一个为真,则返回0,不过若exp1为真则不再计算exp2

注意逻辑表达式如果exp不是表达式,例如单纯的数字,则总是返回假。

3 条件判断语句
1)if结构
if expression
then
command
command

fi

注意:如果expression后没有;号,则then要换行。


if expression
then
command
command

else
command
command

fi


if expression1
then
if/fi 结构
else
if/fi 结构
fi

if expression1
then
if/fi 结构
elif expression2
then
if/fi 结构
else
if/fi 结构
fi

2) case 结构
case var in
var1)
command

command;;
var2)
command

command;;
varN)
command

command;;
*)

command

command;;

4、运算符
运算符
举例
结果(或描述)
+
5+3

8

5-3
2
*
5*3
15
/
5/3
1
%
5%3
2
**(幂)
5**3
125
+=
v+=5
v=v+5
-=
v-=5
v=v-5
*=
v*=5
v=v*5
/=
v/=5
v=v/5
%=
v%=5
v=v%5
<<
v<<2
左移2位

>
v>>2
右移2位
&
5&3

|
5|3

~
~5

^
5^3
异或
<<=
v<<=2
v=v<<2

=
v>>=2
v=v>>2
&=
v&=2
v=v&2
|=
v|=2
v=v|2
^=
v^=2
v=v^2
前置++
v++
先用后加
后置++
++v
先加后用

5、for循环
for i in 1 2 3 4 5
do
command
done


for i in {1..5}
do
command
done


for i in {1..5..1}
do
command
done


for i in $(seq 1 1 5)
do
command
done

注意:1、for i in “”,列表这里是一个字符串,则$i为该字符串。
2、执行完for循环后,done后的i取列表最后一个元素,而非最后一个元素加1或下一个元素。(注意下列例子用””保留了空格或换行。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值