Bash
辨識bash中的文件夾
我試圖學習如何僅辨識主級別文件夾中的文件夾。例子:
- 主要的
- -文件夾 1
- -文件夾 2
- -文件夾 3
我從這個腳本開始:
#!/bin/bash LOCATION="/mnt/test/build/" for folder in $(ls $LOCATION); do echo "$folder" done
但是,當我執行腳本時,它會回顯整個內容,如果文件夾中有空格,則名稱將添加到兩行。如果我將回顯線從更改
"$folder"
為'$folder'
它只會回顯文件夾。任何有啟發性的文章也會很棒。
不要
ls
用於簡單地遍歷目錄的內容,使用 globbing:#!/bin/bash LOCATION="/mnt/test/build/" for folder in "$LOCATION"/*; do [ -d "$folder" ] || continue echo "$folder" done
該
[ -d "$folder" ]
命令測試是否$folder
是目錄。如果不是,則使用 跳過該條目continue
。$LOCATION
注意and周圍的引號$folder
,它們可以防止腳本在$LOCATION
包含空格時中斷。如果您確實需要處理 的內容
ls
,請使用以下內容:ls "$LOCATION" | while read folder; do echo "$folder" done
如果您有額外的限制,即循環內的變數需要在循環後可訪問,請使用 Bash 程序替換:
while read folder; do echo "$folder" done < <(ls "$LOCATION")
Bash 手冊可在http://www.gnu.org/software/bash/manual/獲得。