cp: fts_open: そのようなファイルまたはディレクトリはありません エラー

cp: fts_open: そのようなファイルまたはディレクトリはありません エラー

次のようなスクリプトがあります:

    #!/bin/sh -x

    /bin/echo "Drag folder into Terminal and hit return ->"
    /usr/bin/read folderLocation

    /bin/cp -R "$folderLocation" /Users/my/Desktop/

そして、次のように返されます:

+ /bin/cp -R '' /Users/my/Desktop/
cp: fts_open: No such file or directory

それはなぜだと思いますか?

ご意見をいただければ幸いです。

答え1

Debian Gnu/Linux でこれを動作させました:

#!/bin/sh -x

/bin/echo "Drag folder into Terminal and hit return ->"
read folderLocation

eval "cp -R  -t '/home/my/Desktop' $folderLocation"

読み取りパスを削除しました(削除する必要がないかもしれません(読み取りはbashの組み込み機能であり、またはでは見つかりませ/usr/bin/bin

重要な変更は最後の行にあります:

  • -t オプションの後にターゲット ディレクトリを指定すると、cp がより堅牢になります。
  • read によって戻り値が引用符で囲まれるため、eval が必要です。

なぜ '' (読み取りからの空文字列) が返されるのかについては、ドラッグ アンド ドロップが機能していないためだと思います。これはシェルの機能ではなく、ターミナルとファイル マネージャーの機能です。使用しているターミナル プログラムは何ですか?

関連情報