簡體   English   中英

在OSX中掛載的卷和bash

[英]Mounted volumes & bash in OSX

我正在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

有想法,建議嗎? 也歡迎生成已安裝卷列表的替代方法或更好的方法。

謝謝!

<用於讀取文件。 您不是從文件中讀取,而是從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 } '

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM