shell——for&while&select
2015-07-23 16:57
399 查看
本文通过实例来分析shell中for、while、select的使用。
1、select表达式是bash的一重扩展应用,擅长于交互式场合,永和可以从一组不同的值中进行选中
select var in ... ; do
break ;
done
... now $var can be used ...
例如:用户根据设定值进行选则
echo "what is your favourite OS? "
select var in "LINUX" "Windows" "Unbutu" "Other" ; do
break;
done
echo "You have selected $var"
执行后:
[qatest@nmsg-42 ~]$ ./select.sh
what is your favourite OS?
1) LINUX
2) Gnu Hurd
3) fREE bsd
4) Other
#? 3
You have selected fREE bsd
2、在shell中可以使用while循环,只要测试表达式条件为真,则while循环将一直运行。关键字break用来跳出循环,而关键字continue则可以跳过一个循环的余下部分,直接跳到下一次循环中,while中为方括号[],且有空格
while ... ; do
...
done
例如:while和case结合
while :
do
echo -n "input a letter: "
read var
case "$var" in
[a-z]) echo "Lower case letter" ;;
[A-Z]) echo "Upper case letter" ;;
[0-9]) echo "Digit" ;;
*) echo "other letter" ;;
esac
done
执行后:
[qatest@nmsg-42 ~]$ ./case.sh
input a letter: a
Lower case letter
例如:判断min和max,然后输出,#while循环注意为方括号[],且注意空格
min=1
max=10
while [ $min -le $max ]
do
echo $min
min=`expr $min + 1`
done
例如:#双括号形式,内部结构有点像C的语法,注意赋值:i=$(($i+1)), 即输出4的整数是多少,结果为4和8
i=1
while(($i<10))
do
if(($i%4==0))
then
echo $i
fi
i=$(($i+1))
done
3、在shell中for会查看一个字符串列表(字符串用空格分割),并将其赋给一个变量
for var in ... ; do
...
done
例如:输出1到10,#数字段形式
for a in {1..10}
do
echo "a is $a"
done
例如:#详细列出(字符且项数不多)
for File in 1 2 3 4 5
do
echo $File
done
例如:#对存在的文件进行循环,查找.sh文件,然后输出每个文件的名字
for shname in `ls *.sh`
do
name=`echo "$shname" | awk -F. '{print $1}'`
name=`echo "$shname" | awk -F "|" '{print $1}' #显示扩展名`
echo $name
done
例如:#查找循环(ls数据量太大的时候也可以用这种方法)
for shname in `find . -type f -name "*.sh"`
do
name=`echo "$shname" | awk -F/ '{print $2}'`
echo $name
done
例如:#((语法循环--有点像C语法,但记得双括号,输出3、6、9
for((i=1;i<10;i++))
do
if((i%3==0))
then
echo $i
continue #如果用break,则只会输出3
fi
done
例如:#seq形式 起始从1开始
for i in `seq 100`
do
if((i%3==0))
then
echo $i
continue
fi
done
通过以上示例可以很好的看到select、while、for的使用。
1、select表达式是bash的一重扩展应用,擅长于交互式场合,永和可以从一组不同的值中进行选中
select var in ... ; do
break ;
done
... now $var can be used ...
例如:用户根据设定值进行选则
echo "what is your favourite OS? "
select var in "LINUX" "Windows" "Unbutu" "Other" ; do
break;
done
echo "You have selected $var"
执行后:
[qatest@nmsg-42 ~]$ ./select.sh
what is your favourite OS?
1) LINUX
2) Gnu Hurd
3) fREE bsd
4) Other
#? 3
You have selected fREE bsd
2、在shell中可以使用while循环,只要测试表达式条件为真,则while循环将一直运行。关键字break用来跳出循环,而关键字continue则可以跳过一个循环的余下部分,直接跳到下一次循环中,while中为方括号[],且有空格
while ... ; do
...
done
例如:while和case结合
while :
do
echo -n "input a letter: "
read var
case "$var" in
[a-z]) echo "Lower case letter" ;;
[A-Z]) echo "Upper case letter" ;;
[0-9]) echo "Digit" ;;
*) echo "other letter" ;;
esac
done
执行后:
[qatest@nmsg-42 ~]$ ./case.sh
input a letter: a
Lower case letter
例如:判断min和max,然后输出,#while循环注意为方括号[],且注意空格
min=1
max=10
while [ $min -le $max ]
do
echo $min
min=`expr $min + 1`
done
例如:#双括号形式,内部结构有点像C的语法,注意赋值:i=$(($i+1)), 即输出4的整数是多少,结果为4和8
i=1
while(($i<10))
do
if(($i%4==0))
then
echo $i
fi
i=$(($i+1))
done
3、在shell中for会查看一个字符串列表(字符串用空格分割),并将其赋给一个变量
for var in ... ; do
...
done
例如:输出1到10,#数字段形式
for a in {1..10}
do
echo "a is $a"
done
例如:#详细列出(字符且项数不多)
for File in 1 2 3 4 5
do
echo $File
done
例如:#对存在的文件进行循环,查找.sh文件,然后输出每个文件的名字
for shname in `ls *.sh`
do
name=`echo "$shname" | awk -F. '{print $1}'`
name=`echo "$shname" | awk -F "|" '{print $1}' #显示扩展名`
echo $name
done
例如:#查找循环(ls数据量太大的时候也可以用这种方法)
for shname in `find . -type f -name "*.sh"`
do
name=`echo "$shname" | awk -F/ '{print $2}'`
echo $name
done
例如:#((语法循环--有点像C语法,但记得双括号,输出3、6、9
for((i=1;i<10;i++))
do
if((i%3==0))
then
echo $i
continue #如果用break,则只会输出3
fi
done
例如:#seq形式 起始从1开始
for i in `seq 100`
do
if((i%3==0))
then
echo $i
continue
fi
done
通过以上示例可以很好的看到select、while、for的使用。
相关文章推荐
- 《转》couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145
- 关于XShell上登录跳板机问题及第七天实习记录
- 基于CentOS的MySQL学习补充四--使用Shell批量从CSV文件中插入数据到数据表
- 编写nios-shell时想到的问题-回车vs换行
- shell命令自动分区提示
- linux常用命令之bash 入门指南
- PowerShell 管理VMWare
- shell无限循环
- Linux Shell脚本实现根据进程名杀死进程
- shell 变量赋值
- PowerShell管理Azure
- linux shell curl get 请求头 和多参数问题及解决
- linux shell 字符串操作(长度,查找,替换)详解
- Shell基本知识
- 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法
- 利用grep查找webshell
- shell练习-远程监控
- shell手册--笨鸟杰作
- ubuntu14.04 shell脚本用select报错
- Shell练习-计算一下所有进程所占用内存大小的和