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创建后上传,或者自行度娘解决