Bashスクリプトを実行すると、それ自体を計算できません

Bashスクリプトを実行すると、それ自体を計算できません

このコマンドを実行する場所にabashスクリプトがあります。/home/agrillet/

BOOTSTRAP_MODIF="stat -c %Y '/home/agrillet/a'"

出力は次のとおりです./a: line 60: stat -c %Y '/home/agrillet/a': No such file or directory

ただし、端末で同じコマンドを実行すると機能します。

$ stat -c %Y '/home/agrillet/a'
1517831544

どちらの場合も、rootとしてコマンドを実行しません。誰かが何が起こっているのか説明し、スクリプトを実行するときにスクリプトに関する情報を取得する方法を説明できますか?

たとえば、スクリプト内で別のコマンドを使用すると、cat /home/agrillet/aスクリプト自体からスクリプトを印刷できます。

答え1

これ:

BOOTSTRAP_MODIF="stat -c %Y '/home/agrillet/a'"

変数をBOOTSTRAP_MODIF文字列に設定しますstat -c %Y '/home/agrillet/a'。出力は生成されません。

後で変数を引用符で拡張すると、"$BOOTSTRAP_MODIF"その文字列が文字列として取得されます。エラーメッセージは、Bashがその名前(スペースと両方)を使用してコマンドを実行しようとしているように見えますが、そのコマンドはありません。

bash -x(または)を使用してスクリプトを実行するsh -xか、set -xスクリプト内でそれを使用して、シェルが実際に実行しようとしているコマンドが何であるかを確認できます。

バラよりバッシュFAQ 050後で使用するためにコマンドを保存する方法について説明します。

関連情報