4

以下のBash関数を変更して、各コマンド引数を実行しようとしています。しかし、このスクリプトを実行すると、最初のエコーは意図したとおりに機能しますが、 scratch.txtファイルに追加しようとする2番目のエコーは実際には実行されません。プロンプトにエコーされます。

#!/bin/sh
clear

function each(){
  while read line; do
    for cmd in "$@"; do
      cmd=${cmd//%/$line}
      printf "%s\n" "$cmd"
      $cmd
    done
  done
}

# pipe in the text file and run both commands
# on each line of the file
cat scratch.txt | each 'echo %' 'echo -e "%" >> "scratch.txt"'

exit 0

$ cmd変数をコマンドとして実行するにはどうすればよいですか?

ここで回答2の元のコードを見つけました: xargsを使用した複数のコマンドの実行

4

1 に答える 1

6

あなたがしたいeval。それは悪です。または少なくとも、危険です。BashFAQ #48ですべてを読んでください。

于 2012-11-10T16:31:36.520 に答える