我有一个名为的 bash 脚本,a
位于/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
,我可以从脚本本身打印脚本。
这个:
将变量设置
BOOTSTRAP_MODIF
为字符串stat -c %Y '/home/agrillet/a'
。它不会产生任何输出。如果稍后将变量扩展为
"$BOOTSTRAP_MODIF"
(带引号),您将得到该字符串,作为一个字符串。错误消息看起来像 Bash 试图执行您没有的该名称(空格和所有)的命令。您可以使用
bash -x
(或sh -x
)运行脚本,或set -x
在脚本内部使用以查看 shell 实际尝试运行的命令。请参阅BashFAQ 050,了解如何保存命令以供以后使用。