我有一个非常简单的 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)
删除=in后的空格字符
CDIR= $(pwd)
Run Code Online (Sandbox Code Playgroud)
sh周围不允许有任何空格=。
CDIR= $(pwd)意思是“在未设置pwd变量的情况下运行输出CDIR。 ”
由于您无法运行文件夹,因此您将获得Permission denied.
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)