スクリプトには次のものがあります。
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 {} \;
。