シェルスクリプトで解析エラーが発生します。

シェルスクリプトで解析エラーが発生します。

このコードの実行に問題があります。誰にもアイデアはありますか?

#! /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

私の注目を集めた2つのことは次のとおりです。

  • if ((-f "$inputFile" ; -d "$pathinput" ))bash算術とテストが混在しているようです。あなたがしたいことは:if [[ -f $inputFile && -d $pathinput ]]
  • cp -p $inputFile $pathVScp -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/一見すると、シェルに問題があるとき

関連情報