これは私のシナリオですが、私はn個の可能性を持つフォルダB、C、Dを含むAというルートフォルダを持っています。それらの各フォルダにはbashスクリプトがあります。これらのbashスクリプトを入手して、bashスクリプトを使用して実行するにはどうすればよいですか。Bashはすべてのディレクトリに名前付きの特定のファイルを取得し、スクリプトを実行します
A/B/run.sh
A/C/run.sh
A/D/run.sh
これは私のシナリオですが、私はn個の可能性を持つフォルダB、C、Dを含むAというルートフォルダを持っています。それらの各フォルダにはbashスクリプトがあります。これらのbashスクリプトを入手して、bashスクリプトを使用して実行するにはどうすればよいですか。Bashはすべてのディレクトリに名前付きの特定のファイルを取得し、スクリプトを実行します
A/B/run.sh
A/C/run.sh
A/D/run.sh
簡単:)
eval "$(ls A/*/run.sh)"
lsがスクリプトへのパスとファイルのリストを返します。
「」$の周りに()結果は
evalはスクリプトとして返された行を実行する新しい行を保つことを確認します(あなたも見つける使用することができます)。
スクリプトの名前にスペースが含まれていて、これが脆弱な解決方法である可能性があることに気をつけてください。しかし、それがあなたが示したように見えれば、うまくいくはずです。
~/ eval "$(ls */run.sh)"
I am running and my name is: one/run.sh
I am running and my name is: two/run.sh
run.shスクリプトは次のとおりです:検索で
echo "I am running and my name is: $0"
感謝は期待どおりに機能します! – yetanotherposter
うれしいです。 – Rob
@yetanotherposter:もう一つの解決策はより一般的で、その中に非標準のディレクトリ名を簡単に収容することができます。 – sjsam
:見つかった各*.sh
に対して
find . -name *.sh -type f -exec bash -c '[[ -x {} ]] || chmod u+x {}; {}' \;
:
これは、例えば出力され
を実行し、彼らは任意の引数が必要ですか?問題はどうなるの? – Rob
命令は問題ではなく、引数を必要としません – yetanotherposter
コードを投稿するのを忘れました! StackOverflowは、人々がコードを修正する手助けをしています。無料のコーディングサービスではありません。どのコードもコードなしより優れています。たとえあなたがそれを書く方法を知らなくても、プログラムがうまくいくと思っていることをメタコードが示してくれます。 – ghoti