本文主要是一些shell编程的总结,比较基础
1、 if 语句中变量与特定值比较
if [ "$#" -eq "3" ]; then
echo "####"
else
echo "###"
fi
2、时间戳
today=`date "+%Y%m%d"`
3、书写路径
LOG=/home/boy
NEWLOG=$LOG/newlog.log
LOG=/home/boy/
NEWLOG=$LOG"newlog.log"
4、等于号 = , c/c++同仁么要注意!!!!!
不等于号 !=
5、日志函数
logfile=/home/boy/log/20131105.log
writeLog()
{
time=`date "+%D%T"`
echo "[ $time ] $1" >> $logfile
# whether output to screen
if [ "$2" = "ok" ]; then
echo "$1"
fi
}
6、包含多个条件的if语句
if [ -f "1.conf" -a -f "2.conf" -a -f "3.conf" ];then
echo "###"
fi
if [ -f "1.conf" ] && [ -f "2.conf" ] && [ -f "3.conf" ];then
echo "###"
fi
-a 和&& 还是有点区别的。第一种情况下三个条件都会计算,而第二种则是短路逻辑的形式。就是只在前一个条件成立的情况下计算下面的条件。
7、提取变量的值
TEST=128.10.10.34
echo $TEST | cut -d= -f2
cat $FILE | cut -d= -f2 # cat主要用于文件
if [ "$NUM" = "" ];then #NUM=`echo $TEST | cut -d= -f2`
echo "##"
fi
8、grep使用必知
grep中可以使用正则表达式。
grep匹配成功,$?=0, 否则为1
TEMP=`echo $NUM | grep NUM`
if [ "$TEMP" = "" ];then
echo "###"
fi
9、获取目录下文件个数
NUM=`ls | wc -l`
NUM`ls | grep tar.gz | wc -l` #添加额外的过滤条件
10、使用循环扫描变量
for line in $FILES
do
echo $line
done
11、打印变量值
NUM="boy"
echo "he is a $NUM" # 推荐
echo "he is a "$NUM""
echo "he is a ${NUM}"
12、scp使用
scp /home/boy/log.txt root@111.10.23.3:/tmp/log
scp filepath root@$IP:$DIR
13、如何在远程服务器执行语句
ssh 10.0.119.10 "cat temp.txt; ls -al; python newpy.py"
在实际工作中,可以先将需要在远程服务器中执行的脚本scp过去,然后,
ssh 10.0.119.10 "sh script.sh"
14、函数参数个数
sh test.sh he is a boy
$#=4, 参数个数是不包括函数名的。区别与c语言中main函数的argc。
15、调试技巧
有时候为了调试脚本的方便,可以在脚本中将一些重要的信息打印出来。为了是该信息更加明显,可以用一些特殊的符号,如# * -之类的。
echo "#################$INFO#################"
16、执行变量中的语句
NUM="ls -a"
eval $NUM
17、去除重复行,仅显示唯一行
sort LINES | uniq
LINES为变量
18、计算变量值
NUM=3
$((++NUM))=4