shell-笔记

看自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"

10.jq解析json串

发布了97 篇原创文章 · 获赞 67 · 访问量 46万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章