set命令
# 最常用的是set -x命令,会显示shell运行过程中命令行具体的执行,就是将参数用实际的值替换
# 会将shell执行的过程显示到终端
&操作符
#单一个& 符号且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
java -jar aaa.jar nohup &
[]和[][]的用法
#[]和[[]]
可以在方括号里面进行比较的操作
$()和反引号``的作用
# 命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行
echo today is $(date "+%Y-%m-%d")
# today is 2021-11-04
()和{}的区别
# ()和{}都是对一串的命令进行执行,但有所区别:
# ()只是对一串命令重新开一个子shell进行执行,{}对一串命令在当前shell执行
# ()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开, ()最后一个命令可以不用分号, {}最后一个命令要用分号
# {}的第一个命令和左括号之间必须要有一个空格, ()里的各命令不必和括号有空格
# ()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
特殊符号的含义
$# #代表传入到shell中的参数个数
$0 #shell 本身的文件名
$1~$n #$n就是传入到shell中的第n个参数
注释多行脚本
#!/bin/bash
:<<EOF
echo "I am oldboy"
echo "I am oldboy"
echo "I am oldboy"
EOF #<==顶格写
#原理::号在Bash里也是一个命令,表示啥都不做,<<是输入重定向,两个EOF(可用其它特殊成对字符替代)之间的内容通过<<追加给冒号(:),但是冒号对它们啥都不做,就相当于没做任何处理和输出,就相当于注释了