쉘 스크립트에서 구문 분석 오류가 발생합니다.

쉘 스크립트에서 구문 분석 오류가 발생합니다.

이 코드를 실행하는 데 문제가 있습니다. 누구든지 아이디어가 있습니까?

#! /bin/bash
while :
do
   echo "Enter file name along with absolute path : "
   read -r inputFile
   echo "Enter path you would like to save copy of the file : "
   read  -r pathinput
   path=$pathinput


if ((-f "$inputFile" ; -d "$pathinput" ))
then
    cp -p $inputFile $path
    break
else
    echo "File does not exist. Try again."
fi
done
echo  " Job Done"

답변1

내 관심을 끌었던 두 가지 사항은 다음과 같습니다.

  • if ((-f "$inputFile" ; -d "$pathinput" ))bash 산술과 테스트가 혼합된 것 같습니다. 당신이하고 싶은 일은 :if [[ -f $inputFile && -d $pathinput ]]
  • cp -p $inputFile $pathVS cp -p "$inputFile" "$path"더 많은 인용문을 사용하세요!

쉘에서 올바르게 인용하는 방법을 배우는 것은 매우 중요합니다.

공백/메타 문자를 포함하는 모든 리터럴은 "큰따옴표"로 처리합니다.모든확장: "$var", "$(command "$var")", "${array[@]}", "a & b". 'single quotes'코드나 텍스트 $'s: 'Costs $5 US'에 대해서는 ssh host 'echo "$HOSTNAME"'을 참조하십시오.
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words

사용을 고려해보세요https://www.shellcheck.net/언뜻 보면 쉘에 문제가 있을 때

관련 정보