SHELL学习笔记
变量赋值
# 赋值
A = 10 # 不允许, 赋值时不允许在等号两侧出现空格
A=10 #允许
A= 10 #不允许
A=" 10" #允许
#当赋值时需要填充多个空格,可以使用""
环境变量
[root@localhost gitee]echo $PWD
/usr/local/gitee
# 打印当前目录
[root@localhost gitee]echo $HOME
/root
# 打印家目录
变量作用域
# 定义局部变量A
[root@localhost test]# A=10
[root@localhost test]# echo $A
10
# 编写shell脚本
#!/bin/bash
echo $A
# 执行shell脚本
[root@localhost test]# sh test.sh
# 因为A的作用域不是全局,因此test.sh无法获取A的值
# 局部变量作用域升级
[root@localhost test]# export A
[root@localhost test]# sh test.sh
10
特殊变量
$n
$#
$?
-
作用:判断上一条指令是否成功执行,如果成功执行,返回0;else 返回非0
-
eg:
[root@localhost test]# sh test.sh a b c
a b
3
[root@localhost test]# echo $?
0
# 上一条执行脚本指令成功执行,因此返回0
[root@localhost test]# a = 10
-bash: a: 未找到命令
[root@localhost test]# echo $?
127
# 上一条执行赋值命令执行失败,因此返回非0
$*
计算
条件判断
-
[ contidion ] tip:两端必须有空格
-
条件
-
−
l
t
<
(
l
e
s
s
t
h
a
n
)
~-lt~< (less~than)
−lt <(less than)
-
−
l
e
≤
(
l
e
s
s
e
q
u
a
l
)
~-le~\le (less~equal)
−le ≤(less equal)
-
−
e
q
=
=
(
e
q
u
a
l
)
~-eq~== (equal)
−eq ==(equal)
-
−
g
t
>
(
g
r
e
a
t
e
r
t
h
a
n
)
~-gt~>(greater~than)
−gt >(greater than)
-
−
g
t
≥
(
g
r
e
a
t
e
r
e
q
u
a
l
)
~-gt~\ge (greater~equal)
−gt ≥(greater equal)
-
−
n
e
≠
(
n
o
t
e
q
u
a
l
)
~-ne~\ne (not~equal)
−ne =(not equal)
-
eg
[root@localhost ~]# [23 -gt 22]
-bash: [23: 未找到命令
[root@localhost ~]# [ 23 -gt 22 ]
[root@localhost ~]# [ 23 -gt 22 ]
[root@localhost ~]# echo $?
0
# 上一条执行结果为真 (命令正常执行(因为为真), 因此返回值为0)
[root@localhost ~]# [ 23 -lt 22 ]
[root@localhost ~]# echo $?
1
# 上一条执行结果为假 (指令执行不成功(因为为假),因此返回值为1)
流程控制
if
-
# 写法1
if [ condition ]; then #if和条件之间必须空格, 结尾要有;
程序
fi #结束标志
# 写法2
if [ condition ]
then
程序
fi
-
eg
# 测试脚本
#!/bin/bash
if [ 1 -gt 2 ]; then
echo 'wocao'
fi
echo "nima"
[root@localhost test]# sh test.sh
nima
[root@localhost test]# vim test.sh
#!/bin/bash
if [ 1 -lt 2 ]; then
echo 'wocao'
fi
echo "nima"
[root@localhost test]# sh test.sh
wocao
nima
#测试脚本
case
-
case $变量名 in
"值1")
执行语句
;;
"值2")
执行语句
;;
*)
功能类似default
;;
esac
-
eg
# 编写的脚本文件
1 #!/bin/bash
2 case $# in
3 1)
4 echo "牛掰啊,输入了一个变量"
5 ;;
6 2)
7 echo "卧槽,输入了两个变量"
8 ;;
9 *)
10 echo "淦,不许输入超过2个变量"
11 ;;
12 esac
[root@localhost test]# sh test.sh 1
牛掰啊,输入了一个变量
[root@localhost test]# sh test.sh 1 2
卧槽,输入了两个变量
[root@localhost test]# sh test.sh 1 2 3
淦,不许输入超过2个变量
[root@localhost test]# sh test.sh 1 2 3 4
淦,不许输入超过2个变量
for
-
for ((i=0; i<=100; ++i))
do
程序
done
-
eg
[root@localhost test]# vim test.sh
1 #! /bin/bash
2 sum=0
3 for ((i=0; i<=100; ++i))
4 do
5 # 获取值相加,加法需要运算表达式
6 sum=$[$sum+$i]
7 done
8 echo $sum
[root@localhost test]# sh test.sh
5050