持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
前面我们说了shell大概的数据结构以及一些流程的处理,但这些还远远不够,比如我们的数据是一个文件夹下的,那么我们得循环该文件夹下的文件才行,简单的if判断已经满足不了场景的要求,话不多说,今天看下循环结构及复杂的if结构;
if结构
首先我们看下if结构,很简单,比如我们有三个条件,需要写if语句来实现,怎么写呢?这时我们得加上elif来实现,看用例:该判断语句的结构是if[ 判断 ] then 语句 elif [ 判断 ] then 语句 else 语句 fi;
#!/bin/bash
if [ ${1} -gt 12 ]
then
echo "大于12"
elif [ ${1} -lt 12 ]
then
echo "小于12"
else
echo "等于12"
fi
看下结果:
这个结构很简单,我们暂且就说这么多,再说一嘴,注意我们这里的获取执行时的值,${0}表示脚本本身;
循环结构
现在我们看看循环结构,看下用它如何实现我们的功能;我们先看for结构,表达式是for(( 循环语句)) do 语句 done;
#!/bin/bash
for (( i=0; i<=3; i++))
do
echo "$i"
done
我们再看下while结构,表达式是 while [ 判断 ] do 语句 done;这里有点要注意,在你j=j+1的时候需要将j进行强转,转为int类型的参数;
declare -i j=0
while [ $j -lt 3 ]
do
echo "while $j "
j=j+1
done
我们大概就看这两种结构,现在看个需求统计某个文件夹下文件的数量,如果不存在返回不存在该文件夹,这里注意,具体路径我们可以通过执行时传过去,没必要写死,这里主要用到了if和for的结构,并用declare来接收文件数的统计,ls我们需要用到的包裹符号需要注意下;
fileName="/root"
if [ -e $fileName ]
then
echo "存在$fileName"
declare -i fn=0
for ff in `ls`
do
if [ -f $fileName"/"$ff ]
then
echo "$ff是文件"
fn=fn+1
else
echo "$ff不是文件"
fi
done
echo "文件个数:$fn"
fi
好了,通过上面用例我们大概知道了如何使用循环结构,并且进行相应的文件分析操作,后面我们可以根据这些写上一些脚本方法,后面可以直接调用就行了,shell为我们还是提供很多简单的方法的;好啦🥗🥗🥗;
结束结束,那就🛴🛴🛴