我正在OSX中开发一个磁盘空间监控器脚本,并且很难首先生成一个卷列表。我需要动态地生成这个列表,因为它会随着时间的推移而变化;正确地完成这个工作也会使脚本变得可移植。
我使用以下脚本片段:
#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH
FS=$(df -l | grep -v Mounted| awk ' { print $6 } ')
while IFS= read -r line
do
echo $line
done < "$FS"它产生:
test.sh: line 9: /
/Volumes/One-TB
/Volumes/pfile-archive-offsite-three-CLONE
/Volumes/ERDF-Files-Offsite-Backup
/Volumes/ESXF-Files-Offsite-Backup
/Volumes/ACON-Files-Offsite-Backup
/Volumes/LRDF-Files-Offsite-Backup
/Volumes/EPLK-Files-Offsite-Backup: No such file or directory我需要脚本来生成这样的输出:
/
/Volumes/One-TB
/Volumes/pfile-archive-offsite-three-CLONE
/Volumes/ERDF-Files-Offsite-Backup
/Volumes/ESXF-Files-Offsite-Backup
/Volumes/ACON-Files-Offsite-Backup
/Volumes/LRDF-Files-Offsite-Backup
/Volumes/EPLK-Files-Offsite-Backup想法,建议?替代或更好的生成挂载卷列表的方法也是受欢迎的。
谢谢!
丹
发布于 2013-10-27 17:00:14
<用于读取文件。您正在读取的不是文件,而是bash变量。因此,在最后一行中尝试使用<<<而不是<。
或者,您不需要将结果存储在变量中,然后从变量中读取;您可以直接从管道的输出读取,如下所示(我已经为整洁创建了一个函数):
get_data() {
df -l | grep -v Mounted| awk ' { print $6 } '
}
get_data | while IFS= read -r line
do
echo $line
done最后,循环没有做任何有用的事情,所以您只需去掉它:
df -l | grep -v Mounted| awk ' { print $6 } 'https://stackoverflow.com/questions/19620728
复制相似问题