shell常用语法

0 前言

最近在研究一些开源程序,大量的运行了shell脚本,每次看到不熟悉的命令都要百度,特此记录下来,有时间翻翻看看。

1 接收参数

参数处理 说明
$0 Shell本身的文件名
$1 Shell的第一个位置参数,一直到$9,当n>=10时,需要使用${n}来获取参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数,以”$1 $2 … $n”的形式输出所有参数
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数,以”$1” “$2” … “$n”的形式输出所有参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误

2 shell脚本接收参数模板

用来丢弃参数。比如shell脚本命令行参数传入4个,那个$1就是第一个,执行shift后,$1就会变成第二个。通常配合循环使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
DEPLOY=false

printHelp() {
echo "用法:sh shell.sh [选项]"
echo
echo "选项:"
echo "-h --help:帮助信息"
}

# 处理命令行参数
while [ "$#" -gt 0 ]; do
case "$1" in
--branch) # 参数,需要值
if [ "$2" ]; then
BUILD_BRANCH="$2"
shift 2
else
echo "此参数需要传入分支名称 $1"
exit 1
fi
;;
-s) # 参数,不需要值
static
exit 0
;;
-d) # 参数,字段标识
DEPLOY=true
shift
;;
-h | --help) # 显示帮助信息
printHelp
exit 0
;;
*)
echo "未知的选项 $1" # 处理未知选项或参数
exit 1
;;
esac
done

if [ $DEPLOY = true ]; then
deploy
fi
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2024 zhanglonglong
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信