我有一个 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
,我可以从脚本本身打印脚本。
答案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
在脚本内部使用来查看 shell 实际尝试运行的命令。
看Bash常见问题解答 050关于如何保存命令以供以后使用。