[英]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.