Function
For循環在帶參數的函式中不起作用
因此,我正在創建一個函式,該函式在目錄中的所有文件中作為給定參數執行 for 循環,並列印出所有文件和目錄:
#!/bin/bash List () { for item in $1 do echo "$item" done } List ~/*
但是,當我執行腳本時,它只會列印出目錄中的第一個文件。
有任何想法嗎?
如果您嘗試遍歷目錄中的文件,則需要像這樣 glob 目錄:
#!/bin/bash List () { for item in "${1}/"* do echo "$item" done }
然後這樣稱呼它:
$ list ~
或者,如果您想將多個文件作為參數傳遞,您可以
for
這樣編寫循環:List () { for item do echo "$item" done }
然後可以稱為:
$ list ~/*
您目前的功能有什麼問題:
當您使用 glob 呼叫它時,它會將目錄中的每個文件作為單獨的參數傳遞。假設您的主目錄包含
file1
、file2
和file3
。當你打電話時list ~/*
,你實際上是在打電話:list ~/file1 ~/file2 ~/file3
然後您的
for
循環僅被傳遞位置參數 1,因此for item in ~/file1
其他位置參數未使用。還要感謝 Ilkkachu 指出您
/
在 hashbang 中也忘記了 a,我完全錯過了。