次はなぜ機能しないのですか? :trueの場合、 "$ my_command"実行1;

次はなぜ機能しないのですか? :trueの場合、

親の回答に対するフォローアップこの問題、私の考えに私はできる:

1)コマンド定義:

cmd='for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "arguments" $x; done'

2) ループは次のように実行されます。

while true; do "$cmd"; sleep 1; done

ただし、上記の方法は機能しません。次のような結果が表示されます。

zsh: command not found for x in $(......
zsh: command not found for x in $(......
zsh: command not found for x in $(......
...

どんなアイデアがありますか?

言う:

実行するとfor x in $(my_command | grep keyword | cut -d" " -f1); do command2 "arguments" $x; done'完璧に動作します。

付録:

eval次のように使用すると機能することがわかりました。

while true; do eval "$cmd"; sleep 1; done

cmd毎秒ごとにコマンドを実行する

ベストアンサー1

同じシェルで実行するコマンドを準備するには、関数を使用してください。

cmd () {
  for x in $(my_command | grep keyword | cut -d" " -f1); do
    command2 "arguments" $x
  done
}
while true; do cmd; sleep 1; done

おすすめ記事