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)