更新于 2024-08-05
cat > ./test <<EOF
lin1
line2
line3
EOF
#删除缩进
cat > ./test <<-EOF
lin1
line2
line3
EOF
#不转义变量
cat > ./test <<"EOF"
lin1 $name
line2
line3
EOF
echo -e "name\nage" > ./test
if [ expression ]; then
## 如果条件为真则执行此块,否则转到下一个
elif [ expression ]; then
## 如果条件为真则执行此块,否则转到下一个
else
## 如果以上条件都不成立,则执行此块
fi
以下是可用于数字比较的测试条件运算符:
$a -lt $b $a < $b($a 小于 $b)
$a -gt $b $a > $b($a 大于 $b)
$a -le $b $a <= $b($a 小于等于 $b )
$a -ge $b $a >= $b ($a 大于等于 $b)
$a -eq $b $a == $b
$a -ne $b $a != $b
如果你要比较字符串,可以使用以下测试条件:
"$a" = "$b" $a 与 $b 相同
"$a" == "$b" $a 与 $b 相同
"$a" != "$b" $a 与 $b 不同
-z "$a" $a 为空字符串
文件类型检查也有条件:
-f $a $a 是一个文件
-d $a $a 是一个目录
-L $a $a 是一个链接
for arg in LIST; do
commands
done
while [ condition ]; do
commands
done
case $variable in
pattern1)
# 如果$variable匹配pattern1,则执行这里的命令
;;
pattern2)
# 如果$variable匹配pattern2,则执行这里的命令
;;
*)
# 如果$variable没有匹配任何模式,则执行这里的命令
;;
esac
IFS="," read -d ' ' -ra ARG <<< ${ARGS}
用法
read [选项] [变量名]
-a 指定变量为数组
-r 反斜杠转义不会生效,意味着行末的’\’成为有效的字符,例如使 \n 成为有效字符而不是换行
-p 指定输出提示信息
-d 输入结束符,当输入的内容出现这个字符时,立即结束。一般情况下是以IFS为参数的间隔,但是通过-d自定义
-n 指定输入的字符长度
-t 指定读取值时等待的时间(秒),read命令会一直等待用户输入,时间到自动退出
-s 不显示输入的值,一般用于密码
echo -e "\033[31m xxxxxx \033[0m"
#字背景颜色范围:40–47
40:黑
41:红
42:绿
43:黄色
44:蓝色
45:紫色
46:天蓝
47:白色
#字颜色:30–37
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:天蓝
37:白色
#ANSI控制码的说明
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显