我想从解析输出df,所以我做的arr=( $(df -hPT | awk '{print $1, $2, $3, $5, $6, $7}') )for f in ${arr[@]}; do echo ${f[*]};sleep 1;done但是我明白了FilesystemSizeAvailUse%Mounteddevtmpfs7.8G7.8G0%/devtmpfs7.8G7.7G3%我曾希望的地方Filesystem Size Avail Use% Mounteddevtmpfs 7.8G 7.8G 0%/dev tmpfs 7.8G 7.7G 3%我的计划是$f为每行设置一个数组,因此我可以操纵每行和printf输出。问题有什么想法可以获取awk每df行输出的数组吗?
3 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
解决方案1:在单循环中while:
df -hPT | while read first second third fourth fifth sixth seventh
do
echo $first $second $third $fifth $sixth $seventh
sleep 1
done
解决方案2:跟随单身awk可能会帮助您。
df -hPT | awk '{print $1, $2, $3, $5, $6, $7;system("sleep 1")}'
小唯快跑啊
TA贡献1863条经验 获得超2个赞
在读取时使用...循环
df -hPT | while read line ; do echo "$line" | awk '{print $1, $2, $3, $5, $6, $7}' ;sleep 1 ; done
暮色呼如
TA贡献1853条经验 获得超9个赞
您可以使用内置的bashlines将文件/流的行存储到数组中:
mapfile -t lines < <(df -hPT | awk '{print $1, $2, $3, $5, $6, $7}')
for line in "${lines[@]}"; do
manipulate "$line"
done
需要从流程替换中重定向,因此我们不会引入任何子外壳。
您已经看到了在for循环中未能对变量进行引用时会发生什么:始终对变量进行引用(除非您确切知道为什么不这样做)。
- 3 回答
- 0 关注
- 306 浏览
添加回答
举报
0/150
提交
取消