shell中多行注释方法

1)<< xxx…xxx注释掉两个xxx之间的代码

有效代码段
<< MARK
需要注释掉的代码段
MARK
有效的代码段

这里<<和MARK之间没有空格,这样在两个MARK之间的代码段将不再执行。
另外shell中<<好像有特别的用途,求解?—> 参考这篇文章中的”shell文档化输入”

2)巧妙的条件判断
要注释大段的代码的目的通常可能是对一个功能块进行注释,更合理的 方法推荐用条件判断方式,这样代码更清晰易读

part1=NO
有效代码段
if [ part1 == “YES”]
then
可能会注释掉的代码
fi
有效代码段

这种方法的好处是,比如在上千行代码中寻找特定的MARK块是痛苦而且低效的,此时,如果在文件的开头预置几个这样的变量,从而在文件开头修改一下变量值就可以达到目的。

3)将一个很多行的shell文件按照功能模块化

以上摘自:​​http://blog.sina.com.cn/s/blog_7e9efc570101apww.html​


shell文档化输入

这种标记也可以作为文档化输入

<<MARK
...
MARK

例子1,其中hello world和you are winner就作为cat的输入了

cat <<HELP
hello world
you are winner
HELP

例子2,shell脚本执行输入fdisk的一些参数

sudo fdisk /dev/sdb <<EOF
d
n



+200M
n




w
EOF

shell读取文件数据

shell读取文件一行

while read myline
do
echo "LINE:"$myline
done < datafile.txt

cat datafile.txt | while read myline
do
echo "LINE:"$myline
done

shell读取文件中的变量

while read paraa parab parac
do
echo "PARAA:"$paraa
echo "PARAB:"$parab
echo "PARAC:"$parac
done < datafile.txt

cat datafile.txt | while read paraa parab parac
do
echo "PARAA:"$paraa
echo "PARAB:"$parab
echo "PARAC:"$parac
done

sleep usleep

在linux shell脚本中经常需要做一些延迟,所以会用到sleep和usleep
sleep默认以秒为单位
usleep默认以微妙为单位
sleep不但可以用秒为单位,还可以制定延迟的单位
sleep 1s 表示延迟1 second
sleep 1m 表示延迟1 minute
sleep 1h 表示延迟1 hour
sleep 1d 表示延迟1 day


set

set +x shell脚本中的命令执行结果不为0,立刻退出。
set -x shell脚本中的命令执行结果不为0,不退出,继续执行。


小数计算

小数加减

a=3.2
b=1.5
c=`echo "$a + $b" | bc`

小数比较

​if [ `echo "1.0 > 2.0" | bc` == 1]​


数组

申明关联数组

declare -A cpu_usage_list
cpu_usage_list=([root]=0 [lei]=0)