再帰関数が機能しない

再帰関数が機能しない

言うべきではないと思いますが、ファイルシステムのすべてのディレクトリに分岐するスクリプトを取得しようとしています。ファイル名は「Everywhere.sh」です。コードは次のとおりです。

#!/bin/bash

recurse(){
    cd $1   
    for INDEX in $(echo *)
    do
        recurse $INDEX
    done
}

recurse /

動作させるにはどうすれば変更できますか(su root -c "./Everywhere.sh"を除く)?

編集:この問題を解決する必要があります。他の実行方法は必要ありません。

ベストアンサー1

(あなたの質問に対する答えになったようです。その質問の他の側面に対処したいと思います。)

私はあなたが「これは言うべきことではないことを知っています」と言いましたが、ファイルシステムのすべてのディレクトリで特定のコマンドを実行することは、次のように実行できることに言及したいと思います。

find / -type d -exec sh -c 'cd "$1" && some_command' sh {} \;

これは権限の問題を解決しませんが、再帰シェル関数を書くよりもはるかに簡単です。

おすすめ記事