このコマンドを実行する場所にa
bashスクリプトがあります。/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後で使用するためにコマンドを保存する方法について説明します。