我不明白为什么如果我只是尝试连接一些文件路径(不打开文件),我会得到“权限被拒绝”:
#!/bin/bash
if [ "$#" -eq 1 ]; then
path1= "./src/$1"
path2= "./Main/$1"
echo $path1
else
echo "Invalid number of parameters"
fi
这是我执行 bash 脚本(名为compare.sh)的方式:
聚苯乙烯:./src/GraphicTest.cpp
和./Main/GraphicTest.cpp
是现有文件。
答案1
Shell 变量是使用语法设置的name=value
。声明中不得有任何[未加引号的]空白字符。
path1="./src/$1"
path2="./Main/$1"
# ^ remove space here
您的用法中的空间正在调用 的其他用法name=value
,即为单个程序调用临时设置环境变量。
例如:
# set environment variable "foo" to "bar" for this invocation of "program"
foo="bar" /path/to/program
# set "baz" to an empty value for the invocation of "program"
baz= /path/to/program
您收到权限被拒绝错误的原因path1= "./src/$1"
是因为它被视为“将环境变量 path1 设置为空并调用程序 ./src/$1”,并且由于./src/$1
没有设置其可执行位,因此失败。