shell
shell
本文档使用 MrDoc 发布
-
+
首页
shell
# while read 循环问题 > shell脚本中,遇到一次while read 文件控制循环的时候,出现只循环一次就退出主循环的问题,后来一番搜索才发现在while主结构中有其他的命令也读取输入缓冲区,所以导致后来read已经没记录可读了。 解决办法有两种: - while read之前自行分配文件描述符 ```text exec 3<${readfile} while read -u3 xxxx do command...... done exec 3<&- ``` - 把循环内需要读缓存的命令的标准输入重定向 ```text #例如: ssh xxxxxx </dev/null #或者 ssh -n xxxxx ``` # 查看swap使用情况 ```text #!/bin/bash # swap info for i in $(cd /proc;ls | grep "^[0-9]" | awk '$0>100{print}') do awk '/Swap:/ {a=a+$2} END {print '"$i"','"$cmdl"',a/1024"MB"} ' /proc/$i/smaps 2>/dev/null done | sort -k2nr | head ``` # 让日志文件tail -f只显示最新进度 ```text >d.log for i in $(seq 1 100) do printf "^M%d%s" $i "%" >>d.log #^M通过ctrl+v ctrl+m输入 sleep 1 done ``` # 有分隔符的文本文件按字段去重 ```text sort -t, -u -k1,2 awk -F, '!seen[$1,$2]++' data.txt #awk效率稍低 ```
major
2025年2月27日 09:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码