Bash Shell Tips

对企业级产品里的脚本中常用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
11
if [ -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
2
cat <<EOM
EOM
1
2
cat <<EOF
EOF

local

local

echo -e

echo -e

case esac

case esac