Bash
Bash 腳本分段錯誤
我的任務是編寫一個 bash 腳本,它讀取一個目錄並返回其中每個文件的文件類型,包括所有子目錄。不允許使用 find 命令。我嘗試使用兩個 for 循環來實現這一點,但我遇到了分段錯誤。但是,當我傳遞沒有子目錄的目錄時,我發現該腳本確實有效。有人願意查看菜鳥的程式碼並告訴我出了什麼問題嗎?非常感謝。
#!/bin/bash func () { for name in $1 do if [ -f "$name" ] then file "$name" elif [ -d "$name" ] then func "$1" fi done } directory="$1/*" for name in $directory do if [ -f "$name" ] then file "$name" elif [ -d "$name" ] then func "$1" fi done
如果
$name
它正在處理的“”是一個目錄,你需要呼叫func
它的內容,而不是原始參數,否則你會得到一個無限循環,因此會出現段錯誤。通過在原始參數上使用函式可以大大減少您的程式碼,並將該函式分別應用於每個項目。現在,無論如何,您都在重複主體函式中發生的大部分內容。
#!/bin/bash func () { local arg="$1" if [[ -f "$arg" ]] ; then file -- "$arg" return fi if [[ -d "$arg" ]] ; then for file in "$arg"/* ; do func "$file" done fi } func "$1"