CDIR= $(pwd) 给出“权限被拒绝”

Dil*_*ini 4 scripts

我有一个非常简单的 shell 脚本,叫做 deploy.sh

#!/bin/sh 

CDIR= $(pwd)
echo Hello World!
Run Code Online (Sandbox Code Playgroud)

不幸的是,运行它会出现以下错误:

bird@bird-laptop:~/foo$ sh deploy.sh 
deploy.sh: 3: deploy.sh: /home/bird/foo: Permission denied
Hello World!
Run Code Online (Sandbox Code Playgroud)

任何线索,为什么会这样?

bird@bird-laptop:~/foo$ ls -l
total 156
-rwxrwxrwx 1 bird bird   327 April  18 00:57 deploy.sh
-rw-r--r-- 1 bird bird   327 April  18 00:53 deploy.sh~
Run Code Online (Sandbox Code Playgroud)

Flo*_*sch 9

删除=in后的空格字符

CDIR= $(pwd)
Run Code Online (Sandbox Code Playgroud)

sh周围不允许有任何空格=

CDIR= $(pwd)意思是“在未设置pwd变量的情况下运行输出CDIR

由于您无法运行文件夹,因此您将获得Permission denied.


gle*_*man 5

CDIR= $(pwd)
# ...^
Run Code Online (Sandbox Code Playgroud)

=作业中的周围不能有空格。

这是在做什么:var=value command是一个法律声明。它在“命令”的环境中设置“var”变量,但仅限于该环境。对于您的命令,shell 会看到:

CDIR= $(pwd)           # first, process the $()
CDIR= /home/bird/foo   # prepare the env with CDIR="" and execute /home/bird/foo
                       # oops, cannot execute /home/bird/foo
Run Code Online (Sandbox Code Playgroud)