shell各种功能模块样例总结.sh

#!/bin/bash
################
#标题:shell总结
#作者:破仔
#时间:2020-1-2
###############

#一、
#加上这个,在交互的时候可直接使用后退键,不然需要同时按住ctrl才能生效

stty erase ^h

 

#二、
#echo 命令
#置空文件-1

echo "" > $output

#置空文件-2

echo > $output

 

#三、
#循环读取文件并操作-1

#while命令实现循环
while read line #读取每一行,置于变量line中
do
group=`echo $line |awk '{print $1}'` #获取变量line中的第一点,置于变量$group中
cp template $template_file
#sed命令实现置换
sed -i "s/lgroup/$group/g" $template_file #置换文件中的某些指定部分,如template中的lgroup换成变量$group代表的值
cat $template_f>>$output #将变量$template_f的内容追加到变量$output代表的文件中
rm $template_f
done < $1 #读取shell命令后的第一个文件,如 sh xx.sh host 中的host

 

#循环读取文件并操作-2

filename=df.txt #将文件置于变量$filename中
#for命令实现循环
for line in $(cat $filename) # 读取变量filename中的每一行
do
echo $line #控制台输出行

#awk命令 获取想要的内容
G=`echo $line | awk -F: '{print $2}'` #获取值,置于变量%G中
F=`echo $lin
e | awk -F: '{print $5}'` #获取值,置于变量%F中

#if命令进行比较
if [[ $G -ge 100 ]];then #如果变量G大于100为真,此处用[[]]将变量G变成数值才能比较
if [[ $F -le 20]];then #如果变量F小于20为真

#awk命令 获取想要的内容
echo $line |awk -F: '{print "'$ip'"" "$1,$2"G",%5"%",$6}' >>dfvs.txt #输出内容到文件,双引号""将想要的内容加到输出里,变量再加单引号''
fi
fi
done

 

#四
#控制台显示进度效果

IP_PASSWORD=./ip-password.txt
i=1
l=$(wc -l $IP_PASSWORD |sed 's/^[ \t]*//g' | cut -d ' ' -f1) #去掉空行。计算行数,置于变量l
#for循环
for IP in $(cat $IP_PASSWORD)
do
#cut命令 获取想要的内容
ip=$(echo "$IP" |cut -f1 -d ":") #cut -f1 -d ":"":"为分隔符去第一个字段
password=$(echo "$IP" | cut -f2 -d ":")
# ssh-copl-id to remote tmp
#epect 命令 自动进行交互
epect -c "
# already exist ~/.ssh dir
spawn ssg-copy-id ybsre@ip #输入要执行的命令
expect {
\"*yes/no*\" {sed \"yes\r\"; exp_continue}
\"*password*\" {sed \"$password\r\"; exp_continue}
\"Password*\" {sed \"$password\r\"; exp_continue} #根据反馈进行下一步的输入
}
" >/dev/null
#echo -en用法
echo -en "\b\b\b\b\b" `echo $i*100/$l |bc`'%' #输出进度条,通过变量i*100除以变量l得到百分比
((i++))
done
echo -e '\b\b\b\bOK ' #最后输出结果ok

 


#五
#shell中的函数

getConnection $ip $port #函数调用
function getConnection() #函数内容
{
#timeout命令
rt=`timeout 3 telnet $1 $2 2>$1` #超过3秒自动停止执行命令
echo "$rt" |grep Connected >/dev/null
if [ $? == "0" ];then #$?代表上个命令执行结果,0代表成功,其他代表失败
echo "telnet $! $2 is ok"
else
echo "telnet $! $2 is failed"
fi
}

 

posted @ 2020-04-14 15:24  破仔  阅读(447)  评论(0编辑  收藏  举报