首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSX中的挂载卷和bash

OSX中的挂载卷和bash
EN

Stack Overflow用户
提问于 2013-10-27 16:56:58
回答 1查看 988关注 0票数 0

我正在OSX中开发一个磁盘空间监控器脚本,并且很难首先生成一个卷列表。我需要动态地生成这个列表,因为它会随着时间的推移而变化;正确地完成这个工作也会使脚本变得可移植。

我使用以下脚本片段:

代码语言:javascript
复制
#!/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"

它产生:

代码语言:javascript
复制
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

我需要脚本来生成这样的输出:

代码语言:javascript
复制
/
/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

想法,建议?替代或更好的生成挂载卷列表的方法也是受欢迎的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 17:00:14

<用于读取文件。您正在读取的不是文件,而是bash变量。因此,在最后一行中尝试使用<<<而不是<

或者,您不需要将结果存储在变量中,然后从变量中读取;您可以直接从管道的输出读取,如下所示(我已经为整洁创建了一个函数):

代码语言:javascript
复制
get_data() {
  df -l | grep -v Mounted| awk ' { print $6 } '
}

get_data | while IFS= read -r line
do
  echo $line
done

最后,循环没有做任何有用的事情,所以您只需去掉它:

代码语言:javascript
复制
 df -l | grep -v Mounted| awk ' { print $6 } '
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19620728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档