bashシェルスクリプトのglobからディレクトリ内のコマンドラインからコマンドを実行します

ギャレットウィルソン

bashシェルスクリプトで、bashdo-for.shを使用してglobで指定されたすべてのディレクトリ内でコマンドを実行したいと思います。これは何度も答えられていますが、コマンドラインでコマンド自体を提供したいと思います。言い換えれば、私がディレクトリを持っていると仮定します:

  • foo
  • bar

入りたい

do-for * pwd

そして、bashに作業ディレクトリを内部にfoo、次に内部に出力させbarます。

ウェブ上でたくさんの答えを読んだことから、私はこれができると思いました:

for dir in $1; do
  pushd ${dir}
  $2 $3 $4 $5 $6 $7 $8 $9
  popd
done

どうやらglob*は他のコマンドライン引数変数に展開されますが!だから、ループを初めて通過したとき、$2 $3 $4 $5 $6 $7 $8 $9私は期待してfoo pwdいましたが、代わりに私は得たようfoo barです!

コマンドラインのglobが他のパラメーターに展開されないようにするにはどうすればよいですか?または、これにアプローチするためのより良い方法はありますか?

これを明確にするために、バッチファイルの使用方法を次に示します。(ちなみに、これはWindowsバッチファイルバージョンでは正常に機能します。)

./do-for.sh repo-* git commit -a -m "Added new files."
フレッド

私はあなたがあなたのユーザーにそのようなある種のセパレーターを提供しなければならないことにオープンであると仮定します

./do-for.sh repo-* -- git commit -a -m "Added new files."

スクリプトは次のようなことを行うことができます(これは概念を説明するためのものであり、実際のコードはテストしていません):

CURRENT_DIR="$PWD"

declare -a FILES=()

for ARG in "$@"
do
  [[ "$ARG" != "--" ]] || break
  FILES+=("$ARG")
  shift
done 

if
  [[ "${1-}" = "--" ]]
then
  shift
else
  echo "You must terminate the file list with -- to separate it from the command"
  (return, exit, whatever you prefer to stop the script/function)
fi

この時点で、すべてのターゲットファイルが配列に含まれており、「$ @」には実行するコマンドのみが含まれています。あとは:

for FILE in "${FILES[@]-}"
do
  cd "$FILE"
  "$@"
  cd "$CURRENT_DIR"
done

このソリューションには、ユーザーが「-」区切り文字を忘れた場合に通知されるという利点があることに注意してください(引用による失敗ではありません)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PowerShell:スクリプトのディレクトリからコマンドを実行します

分類Dev

シェルコマンドを実行するが、別のディレクトリから実行するVBA

分類Dev

emacsの特定のディレクトリからシェルコマンドを実行する

分類Dev

bashの別のディレクトリからコマンドを実行します

分類Dev

bashスクリプト内からループでシェルコマンドを実行する方法は?

分類Dev

シェルスクリプト:特定のサブディレクトリを見つけ、それらにcdして、コマンドを実行します

分類Dev

bashスクリプトからファイル内のwgetコマンドでexecを実行すると、wgetオプションが無視されます

分類Dev

Yii2:ベンダーディレクトリのコントローラーからコンソールコマンドを実行します

分類Dev

InnoSetupスクリプトで特定のディレクトリからコマンドを実行する方法

分類Dev

gnomeシェルを起動し、スクリプトから複数のコマンドを実行する方法

分類Dev

「at」コマンドはあらゆる種類のシェルスクリプトを実行できますか?

分類Dev

bashスクリプトからの `dockerrun`の実行は失敗します。コマンドラインでコマンドが失敗しない

分類Dev

Gradleスクリプトからシェルコマンドを実行する

分類Dev

Cシェル:スクリプトからコマンドを実行する

分類Dev

シェルスクリプトからVimコマンドを実行する

分類Dev

シェルスクリプトからantコマンドを実行する

分類Dev

シェルスクリプトからantコマンドを実行する

分類Dev

'cd'コマンドを他の実行中のシェルからの作業ディレクトリを完了するためのbash完了?

分類Dev

sedコマンドを使用してbashスクリプトのファイルから行を削除します

分類Dev

bashスクリプトから「mysql」コマンドを実行します

分類Dev

bashスクリプトから次々にコマンドを実行します

分類Dev

vimスクリプト内で実行されたシェルコマンドの出力をファイルにリダイレクトできますか?

分類Dev

cronはシェルスクリプトを実行していません..しかしコマンドラインから作業しています

分類Dev

netcoreデプロイメントスクリプトから子ディレクトリでnpmコマンドを実行します

分類Dev

Jar ファイル クラスはコマンド プロンプトから実行されますが、QTP のシェル スクリプト オブジェクトを介して実行すると ClassDefFound はありません。

分類Dev

シェルスクリプトからのこれらのコマンドは何をしますか?

分類Dev

「./command」のようにドットスラッシュなしで現在のディレクトリからコマンドを実行する

分類Dev

npmコマンドからsshシェルスクリプトを実行します

分類Dev

シェルスクリプトからコマンドラインにコマンドを渡す方法

Related 関連記事

  1. 1

    PowerShell:スクリプトのディレクトリからコマンドを実行します

  2. 2

    シェルコマンドを実行するが、別のディレクトリから実行するVBA

  3. 3

    emacsの特定のディレクトリからシェルコマンドを実行する

  4. 4

    bashの別のディレクトリからコマンドを実行します

  5. 5

    bashスクリプト内からループでシェルコマンドを実行する方法は?

  6. 6

    シェルスクリプト:特定のサブディレクトリを見つけ、それらにcdして、コマンドを実行します

  7. 7

    bashスクリプトからファイル内のwgetコマンドでexecを実行すると、wgetオプションが無視されます

  8. 8

    Yii2:ベンダーディレクトリのコントローラーからコンソールコマンドを実行します

  9. 9

    InnoSetupスクリプトで特定のディレクトリからコマンドを実行する方法

  10. 10

    gnomeシェルを起動し、スクリプトから複数のコマンドを実行する方法

  11. 11

    「at」コマンドはあらゆる種類のシェルスクリプトを実行できますか?

  12. 12

    bashスクリプトからの `dockerrun`の実行は失敗します。コマンドラインでコマンドが失敗しない

  13. 13

    Gradleスクリプトからシェルコマンドを実行する

  14. 14

    Cシェル:スクリプトからコマンドを実行する

  15. 15

    シェルスクリプトからVimコマンドを実行する

  16. 16

    シェルスクリプトからantコマンドを実行する

  17. 17

    シェルスクリプトからantコマンドを実行する

  18. 18

    'cd'コマンドを他の実行中のシェルからの作業ディレクトリを完了するためのbash完了?

  19. 19

    sedコマンドを使用してbashスクリプトのファイルから行を削除します

  20. 20

    bashスクリプトから「mysql」コマンドを実行します

  21. 21

    bashスクリプトから次々にコマンドを実行します

  22. 22

    vimスクリプト内で実行されたシェルコマンドの出力をファイルにリダイレクトできますか?

  23. 23

    cronはシェルスクリプトを実行していません..しかしコマンドラインから作業しています

  24. 24

    netcoreデプロイメントスクリプトから子ディレクトリでnpmコマンドを実行します

  25. 25

    Jar ファイル クラスはコマンド プロンプトから実行されますが、QTP のシェル スクリプト オブジェクトを介して実行すると ClassDefFound はありません。

  26. 26

    シェルスクリプトからのこれらのコマンドは何をしますか?

  27. 27

    「./command」のようにドットスラッシュなしで現在のディレクトリからコマンドを実行する

  28. 28

    npmコマンドからsshシェルスクリプトを実行します

  29. 29

    シェルスクリプトからコマンドラインにコマンドを渡す方法

ホットタグ

アーカイブ