1、使用While循环打印目录中的所有文件:
#!/bin/bash# 定义要遍历的目录
directory="./"# 使用while循环读取目录中的文件
while read file
doecho "Found file: $file"
done < <(find "$directory" -maxdepth 1 -type f)
最后一行的"< <" 并不是一个单独的输入重定向符号,两个< 至少有一个空格,它是两个符号的组合:左边 < 代表左边接受从右边输入,右边 <(command) 代表右边shell(子shell)命令的输出,将输出输出到左边。
2、 使用awk截取字符串:注意使用的是单引号
awk -F '分隔符' '{print $列号}'
使用cut截取字符串:
cut -d '分隔符' -f列号
3、shell脚本参数的获取,如果参数是以”字符串+列表“的形式传入,那么shell会自动拆分成多个参数再传入脚本。例如参数:192.168.1.{1,2,3,4}
,该参数会被自动拆分成192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4四个,脚本中引用$2
,对应着192.168.1.2。
4、统计系统登录用户数
grep "bash$" /etc/passwd | wc -l
5、awk命令的工作方式:
awk 'BEGIN{ 语句块 } pattern { commands } END{ 语句块 }' file
(1)首先执行BEGIN语句块的语句。
(2)接着从文件或stdin中读取一行,如果能匹配pattern,则执行随后的commands语句。重复这个过程,知道文件全部被读取完毕。pattern是可选的,若果没有pattern,awk就认为所有行都是匹配的。
(3)当读取至输入流末尾,执行END语句块的语句。