LinuxShellScriptingCookbook1

前言

《Linux Shell Scripting Cookbook》是一本不错的介绍bash shell脚本编写技术的书,除了介绍基础知识,书中还提到了很多写脚本时的小技巧,值得借鉴。

数学运算

bash shell的数学运算有多种方式,比如:

let

不需要给变量加$,也可以做自减等。

n=2
let n++
echo $n

(())和[]

双括号,在使用时需要在前面加$,变量名则不需要加。

n=2
$(( n++ ))
echo n

双中括号,在使用时需要在前面加$,变量名则不需要加。

n=2
$[ n++ ]
echo n

bc

上面的方式只能计算整数基本运算,bc是一个精密计算器,可计算浮点数。

echo " 4*0.3 " | bc

将会输出:

1.2

将脚本内部的文本块进行重定向

一个实例是:向某个文件中写入部分数据。这里我选择的一个代码例子是给脚本添加Shebang和版本信息的注释:

cat <<EOFEOF之间所有的行都会被输出,可以将这些部分输出到标准输出或者文件。

# !/bin/bash

filename=$1
#printf "${filename##*/}\n"

cat <<EOF
# !/bin/bash

##: ScriptName: ${filename##*/}
##: Function:
##: LastModified: $(date +'%F')
##: Version: 1.0
##: Plan to update: None
##: ----------------------------------------------------------------------------------
#Change logs: None
#How to use:
# eg.
EOF

为了介绍其应用场景,假设该脚本名为addComments.sh,可以将其放在PATH路径下,然后编辑.vimrc文件,添加:

nnoremap <C-F7> :read !addComments.sh %<CR>

这样,当你用vim打开一个sh文件,例如1.sh时,将光标放在文件最前面,按Ctrl+F7就会自动导入下面的部分:

# !/bin/bash

##: ScriptName: 1.sh
##: Function:
##: LastModified: 2016-09-12
##: Version: 1.0
##: Plan to update: None
##: ----------------------------------------------------------------------------------
#Change logs: None
#How to use:
# eg.

这里的内容可以自己更改,方便定制标准化的注释格式和版本信息等。当然,其实不用vim打开,直接运行脚本也行:

addComments.sh 1.sh > 1.sh

这样,就可以新建一个1.sh,前面几行的版本信息和注释什么的就可以自动添加好了。