Shell语法(2)--循环&文件读写

2020-04-28  本文已影响0人  刘小厨

循环

shell中系统环境变量有seq指令可以打印一个数组,执行seq 1 15:
会打印1~15的数字

for循环

shell中的循环可以使用:

举个栗子:

#!/bin/bash
# `seq 1 15`表示取上述seq指令的结果
for i in `seq 1 15`
do
        echo "条目: $i"
done
#-------------
#执行输出条目: 1~15

简单的累加举例:

#!/bin/bash
j=0
#双括号代表算数运算的集合,expr是系统环境变量自带的脚本,类似于上面的seq expr指令后面加号前后一定加空格,写shell代码一应要注意空格
for ((i=0;i<=100;i++))
do
        j=`expr $i + $j`
done
echo "result: $j"
#执行输出
#result: 5050
for循环文件压缩

查找文件
查找文件可以通过find命令实现比如执行find . -name "*.sh",可以查找当前文件夹下所有.sh格式的文件(包含子目录下的符合条件的文件)

tar czf表示压缩
例如执行 tar czf tar.tgz * 可以将当前目录下的所有文件压缩成.tgz格式
也可以压缩指定文件夹,指定文件类型的文件集合,示例:

#!/bin/bash
#取root文件夹下的所有.sh文件,压缩到test.tgz文件
for i in `find /root -name "*.sh"`
do
        tar -czf test.tgz $i
done

while循环

举个栗子:

#!/bin/bash
i=0
while((i<=100))
do
        echo "数字: $i"
        i=`expr $i + 1`
done
#输出1~100

上述条件判断也可以用命令判断比如:

#!/bin/bash
i=0
#双中括号表示命令条件 lt表示小于 注意空格
while [[ $i -lt 100 ]]
do
        echo "数字: $i"
        i=`expr $i + 1`
done

文件读写

读文件

shell中读文件直接通过read命令即可
命令行输入read命令,会提示输入字符,可以在后面跟上变量名将输入字符赋值给变量:

# read
shell 读
# read line
shell 读取文件
# echo $line
shell 读取文件

举个栗子:

#!/bin/bash
#</root/text.txt表示将文件输出到 尖括号前面的内容可以看做一个整体
while read line
do
        echo $line
done</root/text.txt
#打印结果--------------
shell读文件
第二行
第三行

如果只是打印文件内容,也可以用cat指令
比如:

# cat text.txt

提示:如果输出中文字符乱码,最简单的方式,txt文件在linux下创建(winSCP支持),不要在windows创建后上传,或者自行度娘解决

上一篇下一篇

猜你喜欢

热点阅读