주어진 입력 파일이 읽을 수 있고 일반이며 심볼릭 링크가 아닌지 확인하기 위해 bash 함수를 작성 중인데 괄호 누락 오류가 발생합니다.
function vfile(){
local infile=$1;
if [ ! $1 ]; then
getname;
else
getname $1;
fi;
if [ $? == 1 ]; then
return;
else
infile=$fname;
fi;
if [ -f $infile && -r $infile ];
then
if [ ! -h $infile ];
then
echo "$infile";
(exit 0)
return;
else
echo "$infile";
(exit 1)
return;
fi;
else
(exit 2)
return;
fi
}
37행에서 오류가 발생합니다. if 문에 적절한 간격이 있기 때문에 이상하게 보입니다. 이로 인해 이러한 오류가 발생하는 것 같습니다. 그렇다면 제가 뭘 잘못하고 있는 걸까요?
답변1
&&
내부적으로는 지원되지 않습니다 [...]
. 바꾸다:
if [ -f $infile && -r $infile ]
그리고:
if [ -f "$infile" ] && [ -r "$infile" ]
또한 단어 분리 및 경로 이름 확장을 방지하려면 변수를 큰따옴표로 묶어야 합니다.
옆에
더 나은 호환성을 위해 다음을 교체하십시오.
function vfile(){
그리고
vfile(){
이 새로운 양식은 모든 POSIX 셸에서 실행됩니다. 이 function
키워드는 bash에만 적용되며 값이 없습니다.