2
bashスクリプトでこのような何かをやって:ls
のpidがコンソールに出力されますBashでevalから起動されるプロセスのPIDを取得するには?
#!/bin/bash
ls & echo $!
。しかし、私がこれに変更すると:
#!/bin/bash
command="ls & echo $!"
eval "$command"
もう動作しません。なぜこれがあり、回避策がありますか?
なぜ最初に 'eval'を使用していますか?直ぐに問題になるのは、 '$!'が二重引用符で囲まれているため、 'command'に割り当てた時点で' $! 'が展開されているということです。代わりに一重引用符を使用してください。 – chepner
理由は私がここに記載された問題を解決しようとしているからです:https://stackoverflow.com/questions/44734291/subprocesses-started-by-script-using-eval-are-not-interrupted-on-ctrlc pidをファイルに書き込む。まだそれを稼働させることはできませんでした。 – Johan