您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
马哥linux运维学习笔记-bash脚本编程之五 字符串测试及for循环
发布时间:2018-06-24 20:56:00编辑:雪饮阅读()
一个读取路径并取得该路径的直接父级节点路径的小脚本
echo "/etc/rc.d/aaa" | sed -r 's@^(/.*/)[^/]+/?@\1@g'
一个读取路径并取得该路径节点的最末端,即最深层文件名或目录名的小脚本
echo "/etc/rc.d/aaa" | sed -r 's@^/.*/([^/]+)/?@\1@g'
字符测试
linux中的脚本中的命令也可以直接在当前bash环境下运行,无需封装脚本才能用,如下:
[ $b == $c ]
echo $?
就是可以直接在当前命令行中运行
字符测试相等的语法:
[空格+变量+空格+(=或==)+空格+变量+空格]
变量可以带单引号或双引号,也可以不带引号
实例:
[ $b == $c ]
字符测试的所有比较符号:
==:测试是否相等,相等为真,不等为假
!=:测试是否不等,不等为真,等为假
>:是否大于
<:是否小于
-n string:测试指定字符串是否为空,空则真,不空则假
-s string:测试指定字符串是否不空,不空为真,空则为假
id -n -g
id命令的-n参数不是独立的必须结合-g或-u使用
如我要显示指定用户root的所属组组名如:
id -n -g root
而-u则是显示指定用户的用户名
一个根据传入的用户名来判断该用户的用户名和组名是否一致的小脚本
#!/bin/bash
if [ `id -n -u $1` == `id -n -g $1` ]
then
echo "yiyang"
else
echo "buyiyang"
fi
bc命令的两种将字符串做为参数传入进行运算的方式:
实例1:echo "scale=2;111/22;" | bc
实例2:bc <<< "scale=2;111/22;"
for循环结构:
(1)
for 变量in 列表; do
循环体
done
(2)
for 变量in 列表
do
循环体
done
其实if流程控制语句也有带分号和不带分号两种结构,当条件后不换行时需要有分号否则若其后的then换行了则不需要分号
for循环结构半实例:
for I in 1 2 3 4 5 6 7 8 9 10; do
加法运算
done
for循环结构中列表的生成方法
(1)使用seq序列
seq序列的一些使用实例
seq 10:生成从1到10的列表
seq 5 10:生成从5到10的列表
seq 2 2 10:生成从2到10,步长为2的序列
(2)使用{m..n}
实例:
echo {1..100}:生成从1到100的列表
关于linux中的变量
linux中的变量默认为字符串
bash不支持浮点运算
变量的声名
(1)declare -i sum=0:声名一个整型变量,i即integer若是-x参数则就是export即声名的是环境变量
(2)let sum=0:使用let关键字也可以把变量当作整型处理
head -n
head的-n参数用来显示文件的前k行
实例:
cat /etc/fstab | head -n 3
这里将只显示/etc/fstab中的前3行内容
一个利用for循环计算1-100所有数字之和的小脚本
#!/bin/bash
declare -i sum=0
for I in {1..100}
do
let sum=$[$sum+$I]
done
echo "the 1-100 sum is:$sum"
关键字词:bash,for,字符串测试