对企业级产品里的脚本中常用shell做个记录,平时不写shell很少注意到。
set
控制环境变量1
set -o errexit -o nounset -o pipefail
shift
用来修改参数数组$@
假设执行shell命令bash test.sh 1 2 3 4 5
1
2
3
4
5
6
7
8
9
10
11
12
13#!/bin/bash
echo $@ # 1 2 3 4 5
shift
# 等同于shift 1
echo $@ # 2 3 4 5
shift
echo $@ # 3 4 5
shift 2
echo $@ # 5
可以看到shift可以加参数也可以不加,加参数就是从当前参数数组的第几个参数开始截断
$? $0 $@
返回值,参数,默认值等等
${4:-$COMMAND}
declare
声明参数
尤其是声明全局参数
if
判断表达式的用法1
2
3
4
5
6
7
8
9
10
11if [ -d /test_dir/ ]; then
# 检测目录是否存在
fi
if [ -f /test_file ]; then
# 检测文件是否存在
fi
if [ -z $TEST_VAL ]; then
# 如果变量为空
fi
比较两个浮点型变量1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$s1=10
$s2=9
echo $s1'>'$s2 | bc -l
0
echo $s2'>'$s1 | bc -l
1
$s1=10
$s2=10
echo $s1'>'$s2 | bc -l
0
echo $s2'>'$s1 | bc -l
0
trap
1 | trap - INT |
tr
tr
cut
cut
cat
1 | cat <<EOM |
1 | cat <<EOF |
local
local
echo -e
echo -e
case esac
case esac