
파일을 열지 않고 일부 파일 경로를 연결하려고 하면 "권한이 거부되었습니다"라는 메시지가 표시되는 이유를 이해할 수 없습니다.
#!/bin/bash
if [ "$#" -eq 1 ]; then
path1= "./src/$1"
path2= "./Main/$1"
echo $path1
else
echo "Invalid number of parameters"
fi
이것이 bash 스크립트(비교.sh)를 실행하는 방법입니다:
폴리스티렌: ./src/GraphicTest.cpp
및 ./Main/GraphicTest.cpp
기존 파일입니다.
답변1
쉘 변수는 구문을 사용하여 설정됩니다 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을 null로 설정하고 프로그램 ./src/$1을 호출"하는 것으로 표시되고 ./src/$1
실행 가능 비트가 설정되지 않아 실패하기 때문입니다.