练习:
传递一个用户名参数给脚本, 判断此用户的用户名跟其基本组的组名是否一致, 并将结果显示出来.
(1)
字符测试:
==: 测试是否相等, 相等为真, 不等为假
!=: 测试是否不等, 不等为真, 等为假
>
<
-n string: 测试指定字符串是否为空, 空则真, 不空则假
-z string: 测试指定字符串是否不空, 不空为真, 空则为假
练习: 写一个脚本
传递一个参数 (单字符就行) 给脚本, 如参数为 q, 就退出脚本; 否则, 就显示用户的参数;
练习: 写一个脚本
传递一个参数 (单字符就行) 给脚本, 如参数为 q,Q,quit 或 Quit, 就退出脚本; 否则, 就显示用户的参数;
- #!/bin/bash
- #
- if [ $1 = 'q' ];then
- echo "Quiting..."
- exit 1
- elif [ $1 = 'Q' ];then
- echo "Quiting..."
- exit 2
- elif [ $1 = 'quit' ];then
- echo "Quiting..."
- exit 3
- elif [ $1 = 'Quit' ];then
- echo "Quiting..."
- exit 4
- else
- echo $1
- fi
例:
- , echo "scale=2;111/22;" | bc // 保留 2 位小数, 通过计算器 bc 计算 111/22 的值(方法 1).
- , bc <<< "scale=2;111/22;" // 保留 2 位小数, 通过计算器 bc 计算 111/22 的值(方法 2).
练习:
传递三个参数给脚本, 第一个为整数, 第二个为算术运算符, 第三个为整数, 将计算结果显示出来, 要求保留两位精度. 形如:
./calc.sh 5 / 2
练习:
传递 3 个参数给脚本, 参数均为用户名. 将此些用户的帐号信息提取出来后放置于 / tmp/testusers.txt 文件中, 并要求每一行行首有行号.
写一个脚本:
判断当前主机的 CPU 生产商, 其信息在 / proc/cpuinfo 文件中 vendor id 一行中.
如果其生产商为 AuthenticAMD, 就显示其为 AMD 公司;
如果其生产商为 GenuineIntel, 就显示其为 Intel 公司;
否则, 就说其为非主流公司;
(2)
循环: 进入条件, 退出条件
- for
- while
- until
- (3)
for 变量 in 列表; do
循环体
done
例:
for I in 1 2 3 4 5 6 7 8 9 10; do
加法运算
done
遍历完成之后, 退出;
(4) 如何生成列表:
{1..100} // 生成整数列表的方法 1
`seq [起始数 [步进长度]] 结束数 ` // 生成整数列表的方法 2
(5)
bashshell 不支持浮点数运算, 同时 bash shell 默认的数据类型为字符型.
(6)
bash shell 声明整形的方法:
declare -i SUM=0 // 此处的 - i 为 integer
或:
let sum=0
写一个脚本:
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
只向默认 shell 为 bash 的用户问声好
写一个脚本:
1, 添加 10 个用户 user1 到 user10, 密码同用户名; 但要求只有用户不存在的情况下才能添加;
扩展:
接受一个参数:
add: 添加用户 user1..user10
del: 删除用户 user1..user10
其它: 退出
adminusers user1,user2,user3,hello,hi
写一个脚本:
计算 100 以内所有能被 3 整除的正整数的和;
取模, 取余:%
3%2=1
100U=45
写一个脚本:
计算 100 以内所有奇数的和以及所有偶数的和; 分别显示之;
- let I=$[$I+1]
- SUM=$[$SUM+$I]
- let SUM+=$I
let I+=1 相当于 let I++
-=
let I-=1 相当于 let I--
- ++I, --I
- *=
- /=
- %=
写一个脚本, 分别显示当前系统上所有默认 shell 为 bash 的用户和默认 shell 为 / sbin/nologin 的用户, 并统计各类 shell 下的用户总数. 显示结果形如:
BASH,3users,they are:
root,redhat,gentoo
NOLOGIN, 2users, they are:
- bin,ftp
- #!/bin/bash
- #
- NUMBASH=`grep "bash$" /etc/passwd | wc -l`
- BASHUSERS=`grep "bash$" /etc/passwd | cut -d: -f1`
- BASHUSERS=`echo $BASHUSERS | sed 's@[[:space:]]@,@g'`
- echo "BASH, $NUMBASH users, they are:"
- echo "$BASHUSERS
linux 基础 11-bash 编程(字符串测试 和 for 循环)
来源: http://www.bubuko.com/infodetail-2693598.html