看自shell菜鸟教程:https://www.runoob.com/linux/linux-shell-variable.html
另外文档可参考:http://www.zsythink.net/archives/category/%e5%bc%80%e5%8f%91/bash/
jp参看链接:https://blog.csdn.net/yanbingquan/article/details/50770911
https://www.linuxidc.com/Linux/2017-10/148037.htm
1.for循环
for file in `ls /etc`; do echo $file; done
等价于:
for file in $(ls /etc);do echo $file ;done
2.if条件语句:
注意:条件与符号[]之间要有空格,并且目录名要写绝对路径;
错误:
if [ ! -d "~/shell-icode/" ];
then
mkdir ~/shell-icode
else
echo "file dir already exist"
fi
正确:
if [ ! -d "/Users/xxx/shell-icode/" ];
then
mkdir /Users/xxx/shell-icode
else
echo "file dir already exist"
fi
3.使用变量时才加$
4.变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
echo "I am good at ${skill}Script"
注意:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
5.多行注释
可以将一段代码定义成函数;或者利用:
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
注意:EOF可以为任意字符;
6.实践:写脚本拉取git代码,并执行项目中的单测,mvn命令
#!/bin/bash
function git_pull_master()
{
cd /xx/xx/xx/xx/xx
git clone ssh://xxxxxxxxxx
cd xx/xx/xx
}
if [ ! -d "/xx/xx/xx/xx/xx/" ];
then
mkdir /xx/xx/xx/xx/xx
else
echo "xx-xx-xx dir already exist"
fi
if [ ! -d "/xx/xx/xx/xx/xx/xx/xx/xx/" ];
then
git_pull_master
else
cd /xx/xx/xx/xx/xx/xx/xx/xx
git pull
fi
export MAVEN_HOME=/usr/local/maven3
export PATH=${PATH}:${MAVEN_HOME}/bin
export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=/usr/local/jdk1.8.0_191/jre
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
mvn test
若脚本中,没有给出环境变量;crontab -e设置定时任务时,报没有mvn命令;
7.shell数组
#!/bin/bash
array_name=(
value0
value1
value2
value3
)
length=${#array_name[@]}
echo "获取数组的长度:$length"
echo "获取数组的每个元素:${array_name[@]}"
echo "获取数组的每个元素:${array_name[*]}"
echo "获取数组的第一个元素:${array_name[0]}"
echo "获取数组的第一个元素的长度:${#array_name[0]}"
结果:
获取数组的长度:4
获取数组的每个元素:value0 value1 value2 value3
获取数组的每个元素:value0 value1 value2 value3
获取数组的第一个元素:value0
获取数组的第一个元素的长度:6
8.条件表达式和运算符同表达式之间要有空格
if [ $a == $b ]
then
echo "a等于b"
else
echo "a不等于b"
fi
9.算数
a=5
b=6
result=$[a+b] # 注意等号两边不能有空格
echo "result 为: $result"
result2=`expr $a + $b`
echo "result22为:$result2"