Bash

辨識bash中的文件夾

  • December 14, 2012

我試圖學習如何僅辨識主級別文件夾中的文件夾。例子:

  • 主要的
  • -文件夾 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/獲得。

引用自:https://unix.stackexchange.com/questions/58419