这是开始使用 linux bash shell 脚本的快速参考备忘单。

入门

hello.sh

1
2
3
#!/bin/bash
VAR="world"
echo "Hello $VAR!" # => Hello world!

执行脚本

1
$ bash hello.sh

变量

1
2
3
4
5
6
7
NAME="John"
echo ${NAME} # => John (变量)
echo $NAME # => John (变量)
echo "$NAME" # => John (变量)
echo '$NAME' # => $NAME (字符串原样输出)
echo "${NAME}!" # => John! (变量)
NAME = "John" # => Error (注意不能有空格)

注释

1
2
3
4
5
6
7
# 这是一个内联 Bash 注释。

: '
这是一个
非常整洁的
bash 注释
'

多行注释使用 :' 打开和 ' 关闭

参数

表示 描述
$1$9 参数 1 … 9
$0 脚本本身的名称
$1 第一个参数
${10} 位置参数 10
$# 参数数量
$$ shell 的进程 id
$* 所有参数
$@ 所有参数,从第一个开始
$- 当前选项
$_ 上一个命令的最后一个参数

见:特殊参数

函数

1
2
3
4
get_name() {
echo "John"
}
echo "You are $(get_name)"

见:函数

条件句

1
2
3
4
5
if [[ -z "$string" ]]; then
echo "String is empty"
elif [[ -n "$string" ]]; then
echo "String is not empty"
fi

见:条件句

大括号扩展

1
echo {A,B}.js

表示 描述
{A,B} A B 相同
{A,B}.js A.js B.js 相同
{1..5} 1 2 3 4 5 相同

见:大括号扩展

Shell 执行

1
2
3
4
# => I'm in /当前/的/路径
echo "I'm in $(PWD)"
# Same as:
echo "I'm in `pwd`"

见:命令替换

Bash 参数扩展

语法

代码 描述
${FOO%suffix} 删除后缀
${FOO#prefix} 删除前缀
${FOO%%suffix} 去掉长后缀
${FOO##prefix} 删除长前缀
${FOO/from/to} 替换第一个匹配项
${FOO//from/to} 全部替换
${FOO/%from/to} 替换后缀
${FOO/#from/to} 替换前缀

子字符串

表示 描述
${FOO:0:3} 子串 (位置,长度)
${FOO:(-3):3} 从右边开始的子串

Length

表示 描述
`$

评论
文章归档文章分类文章标签复制本文标题复制本文地址
随便逛逛