linux脚本编程for,谢烟客---------Linux之bash脚本编程---if补充和for循环
if 单分支、双分支、多分支、嵌套if语句
for 列表表示
1、给出列表
2、{1..100}
3、命令引用:
1)$(ls DIR)
2)$(1 1 100)
4、glob
5、$*,$@
condition
declare -i -r -x
readonly
export ,env
set,printenv,env,export,readonly -p
bash:过程式编程,为了完成更复杂的任务,支持顺序执行、选择执行、循环执行
顺序执行:从左而右,依次执行命令。
选择执行:依据condition(条件)的执行状态结果,选择执行不同的代码片段。
循环执行:依据condition(条件)的执行状态结果,决定是否进入循环。
condition:
ture: 表示条件状态结果为0
false: 表示条件执行状态结果非0
if
单分支、双分支、多分支、嵌套if语句1、单分支结构
if condition; then
if-ture
fi
2、双分支结构
if condition; then
if-ture
else
if-false
fi
3、多分支结构
if condition; then
if-ture
elif condition; then
if-ture
elif condition; then
if-ture
....
else
all-false
fi
4、嵌套if语句
if condition; then
if condition; then
if-ture
fi
fi
if condition; then
if condition; then
if-ture
fi
else
if condition; then
if-ture
fi
fi
for
列表循环
格式1、格式一
for 变量名 in 列表; do
循环体
done
2、格式二
for 变量名 in 列表
do
循环休
done
3、格式三,命令行中
for 变量名 in 列表; do 循环体; done
列表表示方法
1、给出列表
2、{首位..尾数} ,例如 1到100表示为" {1..100}"
3、命令引用:
1)$(ls DIR)
2)$(expr [首数 [步长]] 尾数),例如 1到100表示为"$(1 1 100)"
4、通配符, glob . 例如 /var目录下一级子目录中的所有文件和目录的绝对路径。/var/*
5、变量引用。 $* 向脚本传递的所有参数,整体。$@向脚本传递的所有参数,每个独立
脚本格式#!/bin/bash
# Version: major.minor.release
# Author:
# Desc:
脚本语法检测# bash -n file.sh
调试脚本# bash -x file.sh
记录脚本退出状态码INTEVAL=$? (变量引用实现赋值)
用户邮箱位置/var/mail
定义变量的类型整型: # declare -i var
定义变量1、环境变量
# env var
# declare -x var
# export var
2、只读变量
# declare -r var
# readonly var
显示本地和环境变量# set
显示环境变量# export
# env
# printenv
显示只读变量# readonly -p
示例一:交互式给出一个文件路径,判断文件的类型#!/bin/bash
# Version: 0.0.1
# Author: Lcc.org
# Description:testing
read -t 5 -p 'Enter a file path: ' filename
if [ -z "$filename" ]; then
echo "Enter a file path"
exit 1
fi
if [ ! -e $filename ]; then
echo "No such file."
exit 2
fi
if [ -f $filename ]; then
echo "Common file."
elif [ -h $filename ]; then
echo "Symbolic file."
elif [ -d $filename ]; then
echo "Directory."
else
echo "Other type."
fi
示例二:添加10个用户,user1 ,,....user10,密码同用户名(只有root能改密码)。
**只有root能修改密码**1、列表,直接给出
#!/bin/bash
# Version: 0.0.2
# Author: Lcc.org
# Description: add user
##避免执行命令的用户非root用户,非root用户是不能修改密码的。
if [ $UID -ne 0 ]; then
echo "Only root."
exit 1
fi
##以给出列表的方式,循环。当列表循环完毕时,循环结束
for i in user1 user2 user3 user4 user5 user6 user7 user8 user9 user10; do
## 判断用户是否存在。
if id $i &> /dev/null; then
## 执行状态结果为0时,条件为真时,说明什么呢?
echo "$i exist"
else
## 用户不存在时,即可添加用户
if ! useradd $i 2> /dev/null; then
## 添加不成功时, 组合中,对命令或测试条件取反。
echo "$i is outside the law"
else
## 用户名,正常,能正常添加用户,则可以给其添加密码
echo "$i" | passwd --stdin $i > /dev/null 2>&1
## 数值测试添加密码的执行状态结果。
if [ $? -ne 0 ]; then
## 结果不为0,表示执行不成功
echo "password is not legal"
fi
fi
fi
done
2、{1..10}
#!/bin/bash
# Version: 0.0.3
# Author: Lcc.org
# Description: {}表示列表
[ ! $UID -eq 0 ] && echo "Only root." && exit 1
for i in {1..10}
do
id user$i &> /dev/null
if [ $? -eq 0 ]; then
echo "user$i exist"
else
useradd user$i 2> /dev/null
[ $? -ne 0 ] && echo "UserName is not legal" && continue
echo "user${i}" | passwd --stdin user${i} &> /dev/null
[ $? -ne 0 ] && echo "Password is not legal"
echo "Add user user$i finished"
fi
done
3、命令引用
#!/bin/bash
# Version: 0.0.4
# Author: Lcc.org
# Description: $(seq 10)表示列表
[ ! $UID -eq 0 ] && echo "Only root." && exit 1
for i in $(seq 10)
do
id user$i &> /dev/null
if [ $? -eq 0 ]; then
echo "user$i exist"
else
useradd user$i 2> /dev/null
[ $? -ne 0 ] && echo "UserName is not legal" && continue
echo "user${i}" | passwd --stdin user${i} &> /dev/null
[ $? -ne 0 ] && echo "Password is not legal"
echo "Add user user$i finished"
fi
done
4、特殊变量
#!/bin/bash
# Version: 0.0.5
# Author: Lcc.org
# Description: $*,$@表示列表
[ ! $UID -eq 0 ] && echo "Only root." && exit 1
for i in $*
do
id $i &> /dev/null
if [ $? -eq 0 ]; then
echo "$i exist"
else
useradd $i 2> /dev/null
[ $? -ne 0 ] && echo "UserName is not legal" && continue
echo "${i}" | passwd --stdin ${i} &> /dev/null
[ $? -ne 0 ] && echo "Password is not legal"
echo "Add user $i finished"
fi
done
示例三:判断/var/目录下每个文件的类型方法一
#!/bin/bash
# Version: 0.0.6
# Author: Lcc.org
# Description: file type
for i in /var/*; do
if [ -f $i ]; then
echo "Common file."
elif [ -L $i ]; then
echo "Symbolic file."
elif [ -d $i ]; then
echo "Directory."
else
echo "Other type"
fi
done
方法二:
#!/bin/bash
# Version: 0.0.7
# Author: Lcc.org
# Description: Galaxy
cd /var
for i in $(ls /var); do
if [ -f $i ]; then
echo "Common file."
elif [ -L $i ]; then
echo "Symbolic file."
elif [ -d $i ]; then
echo "Directory."
else
echo "Other type"
fi
done
方法三:
#!/bin/bash
# Version: 0.0.8
# Author: Lcc.org
# Description: Add DIR
for i in $(ls /var); do
if [ -f /var/$i ]; then
echo "Common file"
elif [ -L /var/$i ]; then
echo "Symbolic file"
elif [ -d /var/$i ]; then
echo "Directory"
else
echo "Other type"
fi
done
示例四:tcp协议下处于ESTABLISH状态的有多少个,LiSTEN有多少个,有几种状态方法一:
#!/bin/bash
# Version: 0.0.9
# Author: Lcc.org
# Description: statusTCP
declare -i listen=0
declare -i established=0
declare -i other=0
for i in $(netstat -tan | grep '^tcp\>' | tr -s ' ' | cut -d' ' -f6); do
if [ "$i" == "LISTEN" ]; then
let listen++
elif [ "$i" == "ESTABLISHED" ]; then
let established++
else
let other++
fi
done
echo -e "LISTEN statu: $listen\nESTABLISHED statu: $established\nOther status: $other\nTotal type: $(netstat -tan | grep '^tcp\>' | tr -s ' ' | cut -d' ' -f6 | sort -u | wc -l)"
方法二:
# netstat -tan | grep '^tcp\>' | awk -v FS=' ' '{ARRAY[$NF]++}END{for(i in ARRAY){print i,ARRAY[i]}}'
LISTEN 12
CLOSE_WAIT 1
ESTABLISHED 3
linux脚本编程for,谢烟客---------Linux之bash脚本编程---if补充和for循环相关推荐
- aws linux 安装图形,linux – 用于安装AWS CLI工具的Bash脚本
我正在编写一个自动安装和配置AWS CLI工具的bash脚本.我可以安装AWS CLI工具,但无法配置它. 我的脚本是这样的: #!/bin/bash wget https://s3.amazonaw ...
- linux脚本里用expect,如何在bash脚本中使用expect
这是我在 following bash脚本中使用的代码片段: for user_input in `awk '{print}' testfile_$$.txt` do ipaddress=`echo ...
- bash脚本创建变量_创建一个Bash脚本模板
bash脚本创建变量 在本系列的第一篇文章中,您创建了一个很小的单行Bash脚本,并探讨了创建Shell脚本的原因,以及为什么它们是系统管理员而非编译程序最有效的选择. 在第二篇文章中,您将开始创建一 ...
- sh脚本和bash脚本_我是如何开始使用bash脚本的
sh脚本和bash脚本 前几天我写了一个剧本. 对于某些人来说,这句话听起来没什么大不了的. 对于其他人,我知道您在外面,那句话很重要. 你看,我不是程序员. 我是作家 我需要解决的问题 我的问题很简 ...
- sh脚本和bash脚本_使用此简单的Bash脚本在家打印双面文档
sh脚本和bash脚本 我们家里有一台激光打印机. 惠普(Hewlett Packard)LaserJet Pro CP1525nw彩色打印机是一种较旧的型号,但它是一台出色的打印机,可以可靠地进行彩 ...
- bash 获取脚本存放路径_如何获取Bash脚本自己的路径
bash 获取脚本存放路径 Bash script may need to get its own path. In normal Bash script, $0 is the path to the ...
- Linux初级运维(七)——bash脚本编程(常见测试)
一.bash中常用的条件测试 测试方法: [ expression ] [[expression]] test expression 1.整数测试 -gt:大于 -le:小于等于 -ne:不等于 -e ...
- linux里面的注释命令是啥,bash脚本中单行及多行注释方法
一:单行注释直接在行首加"#" 如:#我是注释行 二.多行注释利用:空命令 注意:以下方法中如果在注释中出现反引号引用的命令将会执行,存在风险. 1.把输入重定义到前面的命令,但是 ...
- Linux自定义动态壁纸,一个简单的bash脚本可根据特定条件设置动态壁纸
dynamic-wallpaper
- Linux中执行bash脚本报错/bin/bash^M: bad interpreter: No such file or directory
问题描述:Linux中采用绝对路径执行Bash脚本,报错-bash: /home/xxx.sh: /bin/bash^M: bad interpreter: No such file or direc ...
最新文章
- 当年修复Linux启动菜单的笔记
- MVC模式和Maven项目构建
- c++中union的使用,看高手们如何解释的
- Spring MVC Boot Cloud 技术教程汇总(长期更新)
- 1月31日 资源网站(素材模板)
- Filter in Servlet
- Python Lambda 的简单用法
- Advanced Wlan Attacks (RADIUS)
- Mysql 5.7 for windows 免安装版(解压版)安装和配置
- php中编码转换,php程序中的编码转换
- edem颗粒替换_Altair EDEM Professional 2020.2安装教程(附替换补丁)
- Pytorch是什么?Pytorch能用来干什么?
- 网站性能优化三大策略
- MySQL的基础汇总(包含60道练习题)~~
- 我用Three.js创作游戏(一)
- 最新小程序反编译详细教程,亲测可用
- Terraform 系列-什么是 IaC?
- 浏览器调起app应用方法
- SpringBoot读取Word文档
- 火车头图片储存-火车头采集图片储存插件及教程
热门文章
- 推荐几款牛逼Chrome网页翻译插件,功能强大内容惊艳,务必低调使用
- python清除所有变量_python清理变量
- 微软ImageX工具*.wim文件的备份与恢复
- Springboot发送手机短信验证码并且校验
- 施密特正交化过程编程c语言,利用C程序编写格拉姆-施密特正交化的过程.docx
- mysql在子查询中使用自定义变量和条件语句实现函数效果的查询语句
- 视频教程-【直通华为HCNA/HCNP系列R篇7】可靠性功能原理及配置与管理-华为认证
- java推送微信消息换行_微信公众号开发:回复文本消息换行的三种方式
- c语言实现面向对象OOC
- 个人支付微信支付宝接口