shell脚本中的变量
变量
定义:在程序运行过程中可以改变的量
shell脚本中,变量有两种,一种是用户自定义变量,另外一种是系统默认变量(path)
变量的格式 变量名=变量值
your_name =“zhangsan”
注意:变量名和等号之间不能有空格
变量名的命名必须遵循以下规则:
①首个字符必须为字母(a-z或者A-Z)
②中间不能有空格,可以使用下划线(_)
③不能使用标点符号
④不能使用bash里面的关键字(比如Linux系统中的命令cp,ls,rm,mv等)
shell脚本中的逻辑判断
格式1:if 条件 ; then 语句; fi
#!/bin/bash
a=5
if [ $a -gt 3 ]
then
echo ok
fi
其中方括号内开头结尾必须要有空格
-gt表示大于
在命令行中可以写成:a=5;if [ $a -gt 3 ];then echo ok;fi
格式2:if 条件; then 语句; else 语句; fi
#!/bin/bash
a=4
if [ $a -lt 3 ]
then
echo yes
else
echo no
fi
-lt表示小于
其中else表示不符合条件时打印的语句
格式3:if 条件1; then 语句1;elif 条件2; then 语句2; elif条件3;then 语句3;else 语句3; fi
#!/bin/bash
a=5
if [ $a -eq 3 ]
then
echo “the num = 3”
elif [ $a -gt 6 ]
then
echo “the num > 6”
elif [ $a -lt 4 ]
then
echo “the num < 4”
else
echo “the num = 5”
fi
意思为符合条件1则执行语句1,不符合则再判断是否符合条件2,再不符合则判断条件3,都不符合则执行语句else
其中eq表示等于
elif条件可以写多个
逻辑判断表达式:if [ $a -gt $b ] if [ $a -lt 5 ] if [
b
−
e
q
10
]
也
可
以
使
用
数
学
形
式
i
f
(
(
b -eq 10 ] 也可以使用数学形式 if ((
b−eq10]也可以使用数学形式if((a>
b
)
)
i
f
(
(
b)) if((
b))if((a<5)) if(($b==10))
if语句中也可以使用 && ||结合多个条件
表示并且,同时满足:if [ $a -gt 5 ] && [ $a -lt 10 ]
表示或者满足其中一个: if [ $b -gt 5 ] || [ $b -lt 3 ]
if判断文件,目标属性
判断文件是否存在:
#!/bin/bash
f="/tmp/liuzq"
if [ -f $f ]
then
echo $f exist
else
touch $f
fi
判断文件是否存在,存在退出,不存在则创建该文件
判断目录是否存在:
#!/bin/bash
f="/tmp/liuzq"
if [ -d $f ]
then
echo $f exist
else
touch $f
fi
有时候可以简写为下面的代码:
#!/bin/bash
f="/tmp/test"
[ -f $f ] && rm -f $f
判断是否是文件,是的话删除该文件。
[ -f $f ] || rm -f $f 它表示文件不存在则执行rm语句 等同于[ ! -f $f ] && rm -f $f
它与下面的代码是一样的意思:
#!/bin/bash
f="/tmp/test"
if [ -f $f ]
then
rm -f $f
fi
判断文件或者目录是否存在:
#!/bin/bash
f="/tmp/test"
if [ -e $f ]
then
touch $f
fi
即使已经存在了也会去touch该文件但会更改文件/目录的是时间
判断文件是否可读
#!/bin/bash
f="/tmp/test"
if [ -r
f
]
t
h
e
n
e
c
h
o
"
f ] then echo "
f]thenecho"f readable"
fi
if的特殊用法
使用命令来做判断条件:if grep -wq zhaoyujie /etc/passwd;then echo zhaoyujie exist;fi
1.判断zhaoyujie用户是否存在,存在则输出zhaoyujie exist
2.其中grep -wq 表示选取(-w)过滤完全符合的一个词(-q)不打印
使用! 在参数前 表示取反 [ ! -e file ] 表示文件不存在
if (($a<1)); then …等同于 if [ $a -lt 1 ]; then…
中括号中不能使用<,>,==,!=,>=,<=这样的符号
case判断
在case程序中,可以在条件中使用|,表示或的意思, 比如:
2|3)
command
;;