shell 脚本编程
字符测试方法
双目测试:
比较俩个字符串(== 等于,等值比较 != 不等)
单目测试:
-n $stringVar:字符串是否为空 -z $stringVar:字符串是否为空,空则为真,不空为假。
-a:用于逻辑与的操作 -e:检查文件是否存在
-f:检查文件是否为普通文件
-d:检查文件是否是目录文件
-r:检查文件是否可读
-w:检查文件是否为写
-x:检查文件是否为可执行
例题:
1.写一个脚本 (1)让用户交互式输入一个用户名,先判定用户是否存在;不存在,则以7为退出码;(2)、判断用户的shell是否为/bin/bash; 如果是,则显示为“Bash User.”,退出码为0; 否则,则显示为“Not Bash User.”,退出码为1;
#!/bin/bash
read -p "请输入用户名" username
id $username
num=$?
if [ $num -eq 0 ];then
shell=`cat /etc/passwd | grep ^$username | awk -F ":" '{print $7}'`
if [[ $shell == "/bin/bash" ]]
echo "bash"
exit 0
else
echo "no"
exit 1
fi
else
echo "bu ok"
exit 7
fi
2.判断用户的shell是否为/bin/bash; 如果是,则显示为“Bash User.”,退出码为0; 否则,则显示为“Not Bash User.”,退出码为1;
#!/bin/bash
# 提取当前用户的用户名
USERNAME=$(whoami)
# 从/etc/passwd文件中获取用户的shell
USER_SHELL=$(grep "^$USERNAME:" /etc/passwd | awk -F: '{print $NF}')
# 判断用户的shell是否为/bin/bash
if [ "$USER_SHELL" == "/bin/bash" ]; then
echo "Bash User."
exit 0
else
echo "Not Bash User."
exit 1
fi
你可以将上述脚本保存为一个文件(例如check_shell.sh),然后给它执行权限并运行它:
chmod +x check_shell.sh
./check_shell.sh
如果脚本输出“Bash User.”并且退出码为0,那么你的默认shell就是/bin/bash。如果输出“Not Bash User.”并且退出码为1,那么你的默认shell就不是/bin/bash。
3.案例 1.显示如下菜单: cpu) show cpu info; mem) sowmemory info; quit) quit Enter your option: 2.如果用户选择cpu,则显示文件/proc/cpuinfo的信息; 3.如果用户选择mem,则显示文件/proc/meminfo的信息; 4.如果用户选择quit,则退出,且状态码为5; 5.如果用户输入其他字符,则显示未知选项,请重新执行脚本,退出状态码为6
位置参数替换
案例:
写一个脚本,使用形式如下:脚本名称 u username[v{1|2}] -u选项用于指定用户名;脚本显示用户名的uid,gud。如果同时使用-v选项: v后面的值是1,显示用户的家目录 v后面的值是2,显示用户的家目录和shell类型。
for循环入门
脚本执行流程:
顺序执行:默认规则,逐条执行语句
选择执行:条件判断,符合条件给予执行
循环执行:将同一段代码反复执行。 例: for while
fou循环格式
for Var_name in 列表;
do
循环体
done
生成列表的方式:
方法一:
直接给出列表。 例子: for num in 1 2 8 89
方法二:
使用文件名通配的机制生成列表。
方法三:
可以使用{}或者seq命令生成
例:
方法四:
使用命令生成
for循环实践
1案例:删除10个用户,user120....130,并且删除其家目录。
2.案例:用file命令,显示 /var/log目录下每个文件类型
#!/bin/bash
# 使用通配符和循环遍历/var/log目录下的所有文件
for file in /var/log/*; do
# 检查是否是一个文件
if [ -f "$file" ]; then
# 对每个文件执行file命令
file "$file"
fi
done
bash四则运算
方法一:使用方括号 方法二:使用双圆括号
四则运算: + - * / %
3-1案例:计算100以内所有正整数之和
3-2案例:分别计算100以内偶数之和和奇数之和
方法一:
方法二:
while循环介绍
while的语法结构:
while 条件测试 do 循环体 done (while循环:条件成立,则循环;失败,则退出)
注意: while循环必须有退出条件 否则成为死循环
4.1案例:计算100以内的和
4.2案例:求100以内偶数的和
#!/bin/bash
num=0
sum=0
while [ $num -lt 101 ];
do
sum=$[$num+$sum]
echo $sum
num=$[$num+2]
done
4.3案例:监控tom是否登录系统,如果登录系统,向另一个终端发信息
while ture
do
str=`who | grep -o ^"zbs"`
if [[ $str == "zbs" ]];then
echo "123" >>/dev/pts/3
fi
echo "not login"
sleep 5
done
while处理文件
while read line(line是变量名)
do
循环体
done</etc/passwd
原文地址:https://blog.csdn.net/2401_83693610/article/details/140135241
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!