我想运行以下脚本
#!/bin/sh
temp =`date +%Y%m%d`
echo "$temp"
但这没有按预期运行 它抛出了这个错误信息temp:执行权限被拒绝
答案 0 :(得分:8)
你有
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
答案 1 :(得分:0)
temp
变量需要在没有空格的情况下分配。
答案 2 :(得分:0)
您的脚本确实有语法错误,要修复它删除第二行temp
后的空格,但此错误不会抛出
execute permission denied
但line 2: temp: command not found
。
您的脚本没有执行权限,要修复它调用:
chmod +x FILE.sh
其中FILE
是此脚本的名称。
答案 3 :(得分:0)
在sh脚本(不仅仅是bash)中,在分配变量时不接受等号,因为你可以这样做:
VARIABLE=something ./runcommand
将该变量导出到./runcommand子进程,但通常不会导出到所有子进程。
如果允许空格,则无法区分分配的结束与命令行的开头。
答案 4 :(得分:0)
我在上面的代码中发现了错误,我在字符串temp
后面允许一个空格。这导致了错误。