您的位置:首页 > 其它

while的另外几种用法

2016-06-19 12:24 274 查看
while的另外几种用法

写一个脚本,完成以下功能:
说明:此脚本能于同一个repo文件中创建多个yum源的指向;
1. 接受一个文件名做为参数,此文件存放至/etc/yum.repos.d目录中,且文件名以.repo为后缀;要求此文件不能事先存在,否则报错;

2. 在脚本中,提醒用户输入repo id; 如果为quit,则退出脚本;否则,继续完成下面的步骤:

3. repo name以及baseurl的路劲,而后以repo文件的格式将其保存至指定的文件中;

4. enabled默认为1,而gpgcheck默认设定为0;

5. 此脚本会循环执行多次,除非用户为repo id 指定为quit

#!/bin/bash#REPOFILE=/etc/yum.repos.d/$1if [ -e $1 ];then echo "$1 exists." exit 3firead -p "Repository ID:" REPOIDuntil [ $REPOID = 'quit' ];do echo"$REPOID" >> RREPOFILE read-p "Repository name:" REPONAME echo"name=$REPONAME" >> $REPOFILE read-p "Repository Baseurl:" REPOURL echo"baseurl=$REPOURL" >> $REPOFILE echo-e 'enbled=1\nngpgcheck=0' >>$REPOFILE read-p "Repository ID:" REPOIDdoneecho "hello,word"

---------------------------------------------------------------------------------break:提前退出循环#!/bin/bashwhile :; dowho |grep 'admin' &>/dev/nullif [ $? = 0 ];thenbreakfisleep 5echo "`date` admin not longin"doneecho "admin denglu"------------------------------------------------------------------------------------------------------#!/bin/bash#while :; doread -p "FILE path:" FILEPATH [$FILEPATH = 'quit' ] && echo"quit" && breakif [ -e $FILEPATH ];then echo "$FILEPATH exists"else echo "NO $FILEPATH"fidone----------------------------------------------------------------------~ continue:提前进入下一轮循环,一定要出发某个条件-----------------------------------------------------------------------------while的特殊用法一:无限循环
while :; do
done-------------------------------------------------------------------------------------while的特殊用法二: 使用while来读取文件的每一行。然后进行处理while read LINE; do
done </PATH/TO/SOMEFILE
写一个脚本判断passwd文件里所有bin/bash的用户,并把用户名显示出来#!/bin/bash#FILE=/etc/passwdwhile read LINE;do
[ `echo $LINE | awk -F : '{print $7}'` =='/bin/bash' ] && echo $LINE | awk -F : '{print $1}'done< $FILE只显示6个用户#!/bin/bash#FILE=/etc/passwddeclare -i I=1while read LINE;do
[ `echo $LINE | awk -F : '{print $7}'` =='/bin/bash' ] && echo $LINE | awk -F : '{print $1}' && let I++[ $I -eq 6 ] && break
done < $FILE~ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------如果用户id小于505则不显示#!/bin/bash#FILE=/etc/passwddeclare -i I=1while read LINE;do
[ `echo $LINE | awk -F : '{print $7}'` =='/bin/bash' ] && echo $LINE | awk -F : '{print $1}' && let I++[ `echo $LINE | awk -F : '{print $3}'` -lt505 ] && continue[ $I -ge 6 ] && break
done < $FILE

写一个脚本:1. 判断一个指定的bash脚本是否有语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出,其他任何键可以通过vim打开这个脚本

2. 如果用户通过vim打开编译后保存退出时仍然有错误,则重复第1步中的内容;否则,就正常关闭退出

#!/bin/bash#if ! bash $1 &> /dev/null; then
while :; do read -p "Syntax error q|Q toquit, others for editing:" A[ $A = q -o $A = Q ] && exit 5 || vim $1
donefi

本文出自 “linux运维” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: