shell - for循环、while循环、压缩文件、读文件

忘是亡心i 2023-10-18 18:55 150阅读 0赞

for循环

最简单的for循环
  1. #!/bin/bash
  2. for i in $(seq 1 9)
  3. do
  4. echo "数字 $i"
  5. done

可以看到打印的结果

  1. 数字 1
  2. 数字 2
  3. 数字 3
  4. 数字 4
  5. 数字 5
  6. 数字 6
  7. 数字 7
  8. 数字 8
  9. 数字 9
求和
  1. #!/bin/bash
  2. j=0
  3. for((i=0;i<=100;i++))
  4. do
  5. j=`expr $i + $j`
  6. done
  7. echo $j

可以看到输出结果

  1. 5500

C语言式和``这种方式需要使用bash shell,ubuntu默认使用dash shell,需要将其设置成bash shell
` 这个不是单引号,是ESC下面这个键

压缩文件

找到/root路径下的后缀为.sh的文件,打包压缩成zhk.taz

  1. #!/bin/bash
  2. for i in `find /root -name "*.sh"`
  3. do
  4. tar -czf zhk.tgz $i
  5. done

输出结果

  1. tar: Removing leading `/' from member names
  2. tar: Removing leading `/' from member names
  3. tar: Removing leading `/' from member names

可以看到,目录下多了一个zhk.taz

while循环

  1. while 条件语句
  2. do
  3. 语句
  4. done
shell读文件
  1. #!bin/bash
  2. while read line
  3. do
  4. echo $line
  5. done </root/text/txt

可以把done之前的看做一个整体,<表示把后面的路径输入进行输入

其他

从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash。
所以在使用sh执行检测的时候实际使用的是dash,而dash不支持这种C语言格式的for循环写法。
解决办法详见传送门

Linux shell语言—dash和bash的区别

发表评论

表情:
评论列表 (有 0 条评论,150人围观)

还没有评论,来说两句吧...

相关阅读