4

我想运行以下脚本

#!/bin/sh
temp =`date +%Y%m%d`
echo "$temp"

但这没有按预期运行,它抛出此错误消息 temp: execute permission denied

4

5 回答 5

9

你有

temp =`date +%Y%m%d`
    ^

因此,您需要删除 and 之间的temp空格date

#!/bin/sh
temp=$(date +%Y%m%d) # better than `exp`, thanks @OliverDulac (see comments)
echo "$temp"

有了这个,它对我有用。

确保文件具有执行权限:

chmod +x your_file

或者只是执行它

/bin/sh /your/script/path/your_file
于 2013-05-27T08:35:46.950 回答
0

temp变量需要分配不带空格。

于 2013-05-27T08:35:58.680 回答
0

您的脚本确实有语法错误,修复它删除temp第二行后的空格,但这个错误不会抛出 execute permission deniedbut line 2: temp: command not found.

您的脚本没有执行权限,要修复它调用:

chmod +x FILE.sh

FILE该脚本的名称在哪里。

于 2013-05-27T08:37:16.477 回答
0

在 sh 脚本(不仅仅是 bash)中,分配变量时不接受等号,因为您可以执行以下操作:

VARIABLE=something ./runcommand

将该变量导出到 ./runco​​mmand 子进程,但通常不会导出到所有子进程。

如果允许空格,则无法区分赋值的结尾和命令行的开头。

于 2013-05-27T08:38:45.120 回答
0

我在上面的代码中发现了错误,我在字符串后面允许了一个空格temp。这导致了错误。

于 2013-05-27T08:39:15.600 回答