Bash
如何使用 Bash select 命令顯示不同的目錄內容?
到目前為止,我已經找到了一些使用邏輯構造選項或Asterisk one(即)的 Bash選擇函式用法範例。最後一個列出了所有實際的目錄內容。
select s in *
所以我想了解以下內容:
- 是什麼
*
意思?- 如何顯示另一個目錄內容?
(我嘗試了一些東西
opt=$( ls path )
,select s in "$opt[@]"
但它失敗了)歡迎任何相關連結或範例。
*
就是所謂的“ glob ”,會被bash擴展為“目前目錄下的所有文件”,所以基本上會擴展為目前目錄下所有文件的空格分隔列表(這是常用的格式許多 bash 內置流控制結構所期望的)。Glob 不僅可以單獨使用,還可以作為表達式的一部分使用,因此假設您有一個儲存在 bash 變數中的目錄
$searchdir
(在命名 bash 變數時要小心,以免意外覆蓋基本$PATH
的環境變數,例如)構造select s in "$searchdir"/*
將擴展為“所有文件
$searchdir
”。但是請注意,如果目錄碰巧為空,則表達式將相當於文字
*
(或字面意思/the/actual/value/pointed/to/by/searchdir/*
),除非您通過設置nullglob
選項shopt -s nullglob
然後,如果目錄為空,則 glob 構造將擴展為一個空列表,這通常是您想要的。