Date 将系统日期转换为变量unix

Date 将系统日期转换为变量unix,date,unix,sh,Date,Unix,Sh,我想运行以下脚本 #!/bin/sh temp =`date +%Y%m%d` echo "$temp" 但这并没有像预期的那样运行 它正在抛出此错误消息temp:execute permission denied(执行权限被拒绝) temp =`date +%Y%m%d` ^ 因此,您需要删除temp和date之间的空格: #!/bin/sh temp=$(date +%Y%m%d) # better than `exp`, thanks @OliverDulac (see com

我想运行以下脚本

#!/bin/sh
temp =`date +%Y%m%d`
echo "$temp"
但这并没有像预期的那样运行 它正在抛出此错误消息temp:execute permission denied(执行权限被拒绝)

temp =`date +%Y%m%d`
    ^
因此,您需要删除
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

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

您的脚本确实存在语法错误,要修复它,请删除第二行
temp
之后的空格,但此错误不会抛出
执行权限被拒绝
第2行:找不到临时命令

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

chmod +x FILE.sh
其中
FILE
是此脚本的名称。

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

VARIABLE=something ./runcommand
将该变量导出到./runcommand子流程,但通常不导出到所有子流程


如果允许空格,则无法区分任务的结束和命令行的开始。

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

更像其他人为您找到的一样?而且,作为一个好习惯(并允许轻松嵌套),请使用“$(…”):
temp=$(date+%Y%m%d)
。在“$(…)”内部,您可以在该级别使用引号、变量和特殊字符,也就是说,就好像您在单独一行中写入内部一样。例如:
foo=$(echo“$var$(echo$“var”)”)
Good point,@OlivierDulac!记住这一点总是好的,所以我用这个更新了我的答案。感谢您应该删除chmod+x部分:“权限被拒绝”是因为,在一个额外的空格中,bash看到:
temp=20130527
(如果今天是OP的区域设置中的第27个。即:command/alias/function
temp
,后跟参数
=20130527
),因此它尝试执行“temp”。路径中似乎有一个“temp”文件(如果路径包含“”,则当前目录中可能不应该包含“”,这是上天所禁止的)。赋予该文件/dir执行权限将不会执行OP想要执行的操作(即,定义“temp”变量,不执行同名文件)可能的重复