/usr/bin/find コマンドの置換と併用すると、呼び出しは機能しません。

/usr/bin/find コマンドの置換と併用すると、呼び出しは機能しません。

スクリプトには次のものがあります。

CMD='/usr/bin/find /etc -type f -exec /usr/bin/md5sum {} \; '

MD5=$("${CMD}")

しかし、スクリプトでエラーが発生します。

-bash: /usr/bin/find /etc -type f -exec /usr/bin/md5sum {} \; : No such file or directory

ただし、コマンドラインにそのまま入力すると、$ CMDの内容が機能します。

/usr/bin/find /etc -type f -exec /usr/bin/md5sum {} \;

md5 ハッシュリストを正しく生成します。

文字列でバックスラッシュやセミコロンを避けることを含め、私が考えることができるすべてを試しましたが、うまく動作しないようです。

また、バックティックを使ってコマンドを呼び出しましたが、結果は変わりませんでした。

私は何が間違っていましたか?

ベストアンサー1

単一引用符(スペースを含む)の間の文字列全体は、エラーが示すものとまったく同じように、bashが実行するバイナリ/スクリプトから取得されます。つまり、/usr/bin/find起動したいパラメータで起動しようとしません/usr/bin/find /etc -type f -exec /usr/bin/md5sum {} \;

おすすめ記事