定义变量
变量算是sh脚本中用到比较多的东西,一般用法如下
NGINX_DIR="/usr/local/nginx/html/"
上面是直接定义一个变量,如果你需要将某一行执行语句的运行结果存到变量中去的话,写法如下
# 将反引号中的语句执行结果保存到 filewhole 变量中去
filewhole=`find /user/local -name *.html`
引用变量
引用变量有好几种方式,就拿上面定义的变量来举例子,两种常用的
${NGINX_DIR}
$NGINX_DIR
假如你要引用变量到你执行的语句中去,不用像Java一样拼接字符串,直接把变量丢进去就行,就如
str1="这是字符串1"
str2="这是第二个字符串"
echo $str1$str2
执行结果就为 : 这是字符串1这是第二个字符串
[root@localhost ~]# str1="这是字符串1"
[root@localhost ~]# str2="这是第二个字符串"
[root@localhost ~]# echo $str1$str2
这是字符串1这是第二个字符串
echo
这是比较常用的一种命令,相当于向控制台输出文本,用法如下
echo "nginx html执行路径:"${NGINX_DIR}
判断条件if
既然写sh脚本,就经常会用到条件判断if
if [ $filewhole != "/usr" ];
then
echo "条件成立!"
else
echo "条件不成立!"
fi
这是一个简单的判断字符串操作,就和Java中的equals
一样,if
后面必须要有fi
结束语句
当然你也可以把else
去掉
对变量进行计算
很多时候,我们需要对数字类型的变量进行运算
num1=123
num2=321
result=$((num1*num2))
#输出结果result
[root@localhost ~]# echo $result
39483
常用命令
获取当前所在的路径(pwd)
nowFile=`pwd`
获取当前日期(yyyyMMdd)
datenow=$(date "+%Y%m%d")
获取当前时间(HHmmss)
timenow=$(date "+%H%M%S")
从文件完整路径获取文件名
file_whole_path="/usr/local/tomcat8/webapps/test.war"
file_name="${file_whole_path##*/}"
# 输出结果: test.war
[root@localhost ~]# echo $file_name
test.war
从文件名中提取后缀名和真实文件名(无后缀)
file_name="test.war"
file_realname="${file_name%%.*}"
file_extension="${file_name##*.}"
# 输出结果:
[root@localhost ~]# echo $file_realname
test
[root@localhost ~]# echo $file_extension
war
统计结果的行数 wc -l
(常用于find
指令识别返回结果数量)
count=`find /usr/local/tomcat8/webapps/ -name *.war | wc -l`
# 输出结果: /usr/local/tomcat8/webapps/ 这个目录下 war包 的数量
[root@localhost webapps]# echo $count
1
分别是哔哩哔哩序号35,小米运动序号2,米友社序号13,这个是同一个账号下运行的任务