linux基础11-bash编程(字符串测试 和 for循环)

练习:
传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来。
(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

例:
1, echo "scale=2;111/22;" | bc //保留2位小数,通过计算器bc计算111/22的值(方法1)。
2, 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
100%55=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 ‘[email protected][[:space:]]@,@g‘`

echo "BASH, $NUMBASH users, they are:"
echo "$BASHUSERS

原文地址:https://www.cnblogs.com/mountain2011/p/9344679.html

时间: 2024-10-10 04:04:29

linux基础11-bash编程(字符串测试 和 for循环)的相关文章

linux下Bash编程字符测试与for循环语句(五)

1.字符测试: ==:测试是否相等,相等为真,不等为假 !=: 测试是否不等,不等为真,等为假 >,<,>=,<= -n string: 测试指定字符串是否为空,空则真,不空则假 -z string: 测试指定字符串是否不空,不空为真,空则为假 2.for循环:进入条件,退出条件 for 变量 in 列表; do 循环体 done 生成列表: {1..100}:表示为1至100的数,步长为1 seq [起始数 [步进长度]] 结束数 例如: seq 1 100 默认步长为1 dec

Linux进阶之bash编程(流程控制for循环)

bash脚本里定义后续命令执行日志输出路径 #!/bin/bash logDir=`date +%F` exec &>/tmp/logDir.log       //此次定义后续命令的执行输出日志路径 df -h top for循环 循环允许你重复一段代码固定次数,在循环代码执行期间,一个称为循环变量的特殊变量被赋予了不同的值: for循环很适合处理命令行上的参数以及文件集,for结构的语法如下: for name [in list] do statements done list为名称列表

linux下Bash编程组合测试及编写脚本(五)

linux下Bash编程组合测试及编写综合脚本(五) 1.Bash编程组合测试条件 -a: 与关系 -o: 或关系 !: 非关系 表示方法1:[ $# -gt 100 -a $# -le 500 ] 表示方法2:[ $# -gt 100 ] && [ $# -le 500 ] 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是--add:,将添加用户; 如果选项是--del,将删除用户,如果是--help显示帮助信息 2.2:脚本选项后面的参数可任意指定多个用户并且用

linux下的bash编程简要学习

linux下的bash编程简要学习     1.bash是什么: linux运行时系统只会运行系统运行所需要的运行脚本即系统守护进程,一般根据用户自己需求设定和实现的服务需要手动启动,这种服务进程通常由bash启动,脚本中的命令通常被按照一定规则被bash读取视作参数,因此在脚本头部要申明运行的bash类型,bash命令分为内建命令及外部命令,外部命令通过PATH进行依次查找. bash读取命令后将其启动(fork)成为一个进程,依次启动服务     2.bash控制语句:         本地

linux 基础与shell编程[笔记]

linux 基础与shell编程 linux 系统知识 linux是一个OS ,也是一个完全免费 开源 自由软件 linux 1991   荷兰大学生课程设计   unix GPL协议 GPL:General Public License 是一份GNU(完全自由软件操作系统)是一个广泛使用的自由软件许可证条款 常见的linux发行版本: Debian:Debian为一款提供您安装在计算机上使用的操作系统 (OS).操作系统就是能让您的计算机工作 的一系列基本程序和实用工具.由于 Debian 采

Linux基础之bash脚本编程初级-逻辑运算与测试

引言 前面介绍了bash编程的基础变量与算术表达式,本文介绍在脚本中的进阶知识:测试 在bash中测试大体分两部分:条件测试.组合测试. 而条件测试有分:数值测试.字符串测试.文件测试. 组合测试则有两种表达方式.具体是什么表达方式在文章中会有具体展示. 本文实验环境为CentOS7.2 Linux中为什么要学习测试(判断)? 当我第一次学习这部分内容时,觉得好难,好不爽.可是这又是想要继续学习Linux必须要掌握的知识点.为什么?我们在生活中面对各种选择时总要问问自己,我是否应该怎样,不这样会

Linux基础之bash脚本编程初级-变量

什么是变量? 变量最初来源于数学,指的是非固定的值可变化的数通常用拉丁字母表示.在计算机中变量它依旧指的是可变化的数,只不过表现形式有些变化.它指的是变量名+所指向的内存空间. 以下实验环境均在CentOS7.2进行 变量的特点 变量分强类型变量,与弱类型变量 强类型变量:变量需事先声明且需提前定义其变量存储格式 弱类型变量:不需事先声明,不需定义变量存储格式. bash把所有变量统统视作字符型:bash中的变量无需事先声明,相当于,把声明和赋值过程同时实现. 变量名的命名规范: 变量名只能包含

bash shell基础之三字符串测试及for循环

字符串测试: ==:判断字符串相等 !=:判断字符串不相等 -n:测试指定字符串是否为空 -s:测试指定的字符串是否不空 循环语句: for 变量 in 列表; do 循环体 done 例子: for i in 1 2 3 4 5 6 7 8 9; do 加法运算 done 生成整数列表 for i in {1..100}:表示1到100 for i in `seq 100`:生成一到100或:seq 2(起始数) 2(固进数) 10(结束数).会生成2 4 6 8 10

Linux进阶之bash编程(函数及总结)

1:bash函数的定义格式 [ function ] funname [()] {     action;     [return int;] } 说明: 1:可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2:函数返回值,可以带有return来返回:如果没有,则用函数体最后一行的执行结果,作为返回值.return后跟0-255数值.在调用函数后,通过$?来获得返回值: 3:参数传递,调用函数时,可以往里面传递参数,$n($1,$2...)获取参数值. 2: