指令关键字
nohup 不挂断运行
末尾的& 表示后台运行(有些程序需要结合nohub使用)
2>&1 表示将错误输出重定向到标准输出
| awk '{print NR}' 打印行数
| awk -F " " '{print $1}' 打印第1列,从1开始数(-F 为指定分割符,默认分隔符为[ ]+)$0为整行
lsb_release 查看系统版本信息,-a为完整的,其余单独的为-i/-d/-c,如果再加上-s则会取一行的第二个值输出。可利用该信息下载对应版本安装包,如:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
if条件
单中括号 [ 3 -gt 2 ] 是可执行程序,等价于 /usr/bin/[ 3 -gt 2],等价于 test 3 -gt 2。
对于程序:
d1='2018-01-02 12:11:00'
d2='2018-02-03 10:10:10'
需将命令更改为:if [ "$d1" > "$d2" ] ;then echo 1; else echo 2; fi才可执行
当使用如下命令时报错
if [ $d1 > $d2 ] ;then echo 1; else echo 2; fi
因为实际会执行
if [ 2018-01-02 12:11:00 > 2018-02-03 10:10:10 ] ; then echo 1; else echo 2; fi
需将命令更改为如下命令才可执行
if [ "$d1" > "$d2" ] ;then echo 1; else echo 2; fi
双中括号 [[ 3 == 2 ]] 是脚本解释程序,在与前面同样的变量设置下,运行如下程序可正常运行
if [[ $d1 > $d2 ]] ;then echo 1; else echo 2; fi
-gt -lt 作为数值的比较大小
> < 作为字符串的比较大小,在[ ] 中使用需使用\> \<转义才能保证正确,否则会被当作重定向符号
将字符串作为命令执行
cmd='date +"%Y-%m-%d %H:%M:%S"' # 要执行的字符串
使用 `eval $cmd`的方式执行,但必须要有承载结果集的变量,否则会被当作命令再次执行,如:
echo `eval $cmd`
或 result=`eval $cmd`
# 直接$cmd也可以执行部分命令,但对于复杂命令,在特殊符号上会有识别错误的问题
静默安装debconf
使用debconf-show命令可查看预置项,如:sudo debconf-show oracle-java8-installer可得到如下预置项:
shared/error-oracle-license-v1-1:
oracle-java8-installer/not_exist:
* shared/accepted-oracle-license-v1-1: true
* shared/present-oracle-license-v1-1:
oracle-java8-installer/local:
安装oracle-java8-installer时就可利用预置项实现,无命令行输入的静默安装,如下为预置证书确认值true:
# 设置预置值
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
# 执行安装的过程中会使用该默认值
apt-get install -y oracle-java8-installer