第七、八讲 for 和 while

来源:互联网 发布:就业报表数据分析报告 编辑:程序博客网 时间:2024/06/05 04:28
第七讲 for语句
根据变量的不同取值,重复执行一组命令
格式
 for 变量名 in 取值列表
 do 命令序列
done

实例1:"依次输出3条文字信息,包括一天钟的“Morning”“Noon”“Evening”字串 "
脚本文件:
#!/bin/bashfor TM in “Morning” “Noon” “Evening”  #三个字符串之间只用空格隔开do         echo "The $TM of the day !"done

实例2:“字符串的依次赋值”
脚本文件:
#!/bin/bashfor i in a b cdo       echo "i is $i"done

第八讲 while语句
重复测试指定的条件,只要条件成立则反复执行对应的命令序列
格式
while 命令或表达式
do 命令序列
done

实例1:当用户从键盘输入一个大于1的整数时,计算从1到该数的各个整数的和。
脚本文件
#!/bin/bashread -p  "please input a number greater than 1: " Num   #从键盘输入i=1sum=0while [ $Num -gt $i ]do    sum=`expr $sum + $i `    i=`expr $i + 1 ` # 赋值时,等号前后不能有空格doneecho "the sum of 1~$Num is : $sum"


实例2:批量添加5个系统用户账号,用户名依次为“stu1”、“stu2”、......、“stu20” ,这些用户的初始化密码为123456
脚本文件
#!/bin/bashi=1while [ $i -le 5 ]do    useradd stu$i    passwd==stdin stu$i < /home/pwd.txt #标准输入 从文件pw.txt读取输入    i=`expr $i + 1 ` # 赋值时,等号前不能有空格donetail -5 /etc/passwd  #查看配置文件

扩充:删除这5个用户
#!/bin/bashi=1while [ $i -le 5 ]do    userdel -r stu$i  # userdel -r 表示删除其对应的home目录    i=`expr $i + 1 ` # 赋值时,等号前不能有空格donetail -5 /etc/passwd  #查看配置文件

相关命令
expr 
一般用于整数值计算,但也可用于字符串操作。
格式
expr argument operator argument

注意操作符左右都要有空格
expr 10 + 10
expr 30 / 3 / 2
expr 2 \* 3   表示乘法
i=`expr $i + 1 `  一般用来表示增量计算


read  接收标准输入(键盘)的输入,或者其他文件描述符的输入。
read name  从键盘输入指定到name
read -p "enter your name :"  name    
使用参数-p 可以直接指定一个提示 。

在上面read后面的变量只有name一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据给第二个变量,如果输入数 据个数过多,则最后所有的值都给第一个变量。如果太少输入不会结束。

read -t 5 -p "please enter your name:" name  

-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;

read -n1 -p "Do you want to continue [Y/N]?" answer   

-n选项,后接数值1,指示read命令只要接受到一个字符就退出。只要按下一个字符进行回答,read命令立即接受输入并将其传给变量。无需按回车键。 

read  -s  -p "Enter your password:" pass  
-s选项能够使read命令中输入的数据不显示在监视器上(实际上,数据是显示的,只是 read命令将文本颜色设置成与背景相同的颜色)。  
参考资料http://blog.csdn.net/chen_zhipeng/article/details/8435049

echo -n 不要在最后自动换行
echo -e若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
   \a 发出警告声;
   \b 删除前一个字符;
   \c 最后不加上换行符号;
   \f 换行但光标仍旧停留在原来的位置;
   \n 换行且光标移至行首;
   \r 光标移至行首,但不换行;
   \t 插入tab;
   \v 与\f相同;
   \\ 插入\字符;
   \nnn 插入nnn(八进制)所代表的ASCII字符;

0 0