安全重启:
按住alt+<PrtSc>
,然后依次按下reisub即可安全重启。
¶ 语法
bash支持所有POSIX shell的语法:POSIX shell学习笔记
下面的是不在POSIX标准里的特性。
¶ 条件判断
man bash
,然后搜索CONDITIONAL EXPRESSIONS
,可以看到完整的列表。
¶ for
参考:https://blog.csdn.net/astraylinux/article/details/7016212
for ((i=0; i<10; ++i))
do
echo $i
done
注意是双括号。
还有其他用法。看参考链接
¶ 正则表达式
if [[ 字符串 =~ 模式 ]]; then
echo 字符串中含有模式
fi
比如最简单的:
if [[ 2333test233222 =~ test233 ]]; then
echo yes;
fi
会打印出yes
。
如果要判断是否不包含:
if ! [[ 2333test233222 =~ test233 ]]; then
echo yes;
fi
或操作:
if [[ 2333test233222 =~ abc || 2333test233222 =~ test233 ]]; then
echo yes;
fi
# yes
与操作:
if [[ 2333test233222 =~ abc && 2333test233222 =~ test233 ]]; then
echo yes;
fi
¶ 重定向
# 等价于 Command > shell.log 2>&1
Command &> shell.log
¶ 数组
来源:https://www.yiibai.com/bash/bash-array.html
¶ 定义
ARRAY_NAME=(element_1st element_2nd element_Nth)
¶ 访问某个下标的元素
下标从0开始。
echo ${ARRAY_NAME[2]}
¶ 访问所有元素
# 经实测,bash是每个元素一个不带引号的结果,zsh是每个元素一个带引号的结果
echo ${ARRAY_NAME[@]}
echo ${ARRAY_NAME[*]}
# 每个元素一个带引号的结果
echo "${ARRAY_NAME[@]}"
# 所有元素组成一个结果
echo "${ARRAY_NAME[*]}"
例如:
arg_num() {
echo $#
}
a=(1 "2 3")
# bash 相当于 arg_num 1 2 3
# zsh 相当于 arg_num 1 "2 3"
arg_num ${a[@]}
arg_num ${a[*]}
# 相当于 arg_num 1 "2 3"
arg_num "${a[@]}"
# 相当于 arg_num "1 2 3"
arg_num "${a[*]}"
¶ 访问slice
# 从第m个开始一直到末尾
${ARRAY_NAME[@]:m}
# 从第m个开始取n个。下标从0开始。
${ARRAY_NAME[@]:m:n}
保存为新的数组:
SLICED_ARRAY=(${ARRAY_NAME[@]:m:n})
参考:https://stackoverflow.com/questions/1335815/how-to-slice-an-array-in-bash
¶ 长度
```shell
a=(1 2 3 4)
echo $