linux 字符串 -5,Linux学习之十六(bash脚本编程之五 字符串测试及for循环)-2017-4-23...

bash脚本编程之五 字符串测试及for循环

1、字符测试:

==或=:用于字符串比较是否相同,相等为真,不等为假(等号两端预留空格)

例:[root@Ourlab ~]# A=hello

[root@Ourlab ~]# B=hi

[root@Ourlab ~]# [ $A == $B ]

[root@Ourlab ~]# echo $?

1

!=:用于比较字符串是否不等,不等为真,相等为假

例:[root@Ourlab ~]# A=hello

[root@Ourlab ~]# B=hi

[root@Ourlab ~]# [ $A != $B ]

[root@Ourlab ~]# echo $?

0

-n string:测试指定字符串是否为空,空则真,不空为假

-z string:测试指定字符串是否不空,空则假,不空为真

for循环:进入条件,退出条件

用法:

for 变量 in 列表; do

循环体

done

`seq [起始数 [步进长度]] 结束数`:生成数值列表

例:[root@Ourlab ~]# seq 1 2 10

1

3

5

7

9

declare:声明变量

-i:将变量声明为整形

-x:将变量声明为环境变量

例:写一个脚本,完成1加到100,并显示结果:

#!/bin/bash

#

declare -i SUM=0

for I in {1..100}; do

let SUM=$[$SUM+$I];

done

echo "The sum is:$SUM."

练习一:写一个脚本

传递一个参数(单字符就行)给脚本,如果参数为q,就退出脚本;否则,就显示用户的参数;

#!/bin/bash

#

if [ $1 == "q" ]; then

echo "EXIT!"

exit 0

else

echo "NO EXIT!"

fi

练习二:写一个脚本

传递一个参数(单字符就行)给脚本,如果参数为q,Q、quit或Quit,就退出脚本;否则,就显示用户的参数;

#!/bin/bash

#

if [ $1 == 'q' ]; then

echo "EXIT."

exit 0

elif [ $1 == 'Q' ]; then

echo "EXIT."

exit 0

elif [ $1 == 'quit' ]; then

echo "EXIT."

exit 0

elif [ $1 == 'Quit' ]; then

echo "EXIT."

exit 0

else

echo "$1."

fi

练习三:写一个脚本

传递三个参数给脚本,第一为整数,第二个为算术运算符,第三个为整数,将计算结果显示出来,要求保留两位小数。形如:./calc.sh 5 / 2

#!/bin/bash

#

echo "scale=2;$1$2$3" | bc

练习四:写一个脚本

给脚本传递三个整数,判断其中的最大数和最小数,并显示出来。

#!/bin/bash

#

if [ $# -ne 3 ]; then

echo "Please input three numbers."

exit 10

elif [ $1 -ge $2 ]; then

MAX=$1

MIN=$2

else

MAX=$2

MIN=$1

fi

if [ $3 -gt $MAX ]; then

MAX=$3

elif [ $3 -lt $MIN ]; then

MIN=$3

fi

echo "The MAX is $MAX,the MIN is $MIN."

练习五:写一个脚本

1、设定变量FILE的值为/etc/passwd

2、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:Hello,root,your shell:/bin/bash

3、统计一共有多少个用户

提示:for I in `seq 1 $LINES`; do echo "hello, `head -n $I /etc/passwd | tail -1 | cut -d: -f1`" ;done

#!/bin/bash

#

FILE="/etc/passwd"

LINES=`wc -l /etc/passwd | cut -d ' ' -f1`

for I in `seq 1 $LINES`; do

echo "hello,`head -n $I /etc/passwd | tail -1 | cut -d: -f1`";

done

echo "The users number is $LINES."

练习六:写一个脚本

1、添加10个用户user1到user10,密码同用户名;但要求只有用户不存在的情况下才能添加;

#!/bin/bash

#

for I in `seq 1 10`; do

cut -d: -f1 /etc/passwd | grep "user$I" 2>> /tmp/etc.err || useradd user$I

done

2、针对上题扩展:接受一个参数:add:添加用户user1...user10;del:删除用户user1...user10;其他:退出

#!/bin/bash

#

if [ $1 = 'add' ]; then

for I in {1..10};do

if id user$I &> /dev/null; then

echo "The user$I is exist."

else

useradd user$I

echo "user$I" | passwd --stdin user$I &> /dev/null

echo "The user$I already added."

fi

done

elif [ $1 = 'del' ]; then

for I in {1..10}; do

userdel -r user$I

echo "The user$I already deleted."

done

else

echo "Please input add or del."

exit 2;

fi

练习七:

写一个脚本:

1、计算100以内所有能被3整除的正整数的和;

取模、取余:%

#!/bin/bash

#

declare -i SUM=0

for I in {1..100}; do

if [ $[$I%3] -eq 0 ]; then

SUM=$[$SUM+$I];

fi

done

echo "The sum is $SUM."

练习八:写一个脚本:

计算100以内所有奇数的和以及所有偶数的和;分别显示之;

#!/bin/bash

#

JSUM=0 #奇数和变量

OSUM=0 #偶数和变量

for I in {1..100}; do

if [ $[$I%2] -eq 0 ]; then

OSUM=$[$OSUM+$I];

else

JSUM=$[$JSUM+$I];

fi

done

echo "The OSUM is $OSUM,the JSUM is $JSUM."

阅读(403) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值