Shell 脚本 cp 不工作(但在终端中工作)Mac os X

Sta*_*kov 2 macos bash shell syntax-error cp

最近在学习shell脚本,被一个奇怪的错误难住了:

我的简单脚本(test.command):

#!/bin/sh
clear
cd /Users/Stan/Desktop/testFolder
ls 
cp "earth.png lol.png"
read -p "Done, press ENTER to finish"
Run Code Online (Sandbox Code Playgroud)

每当我运行脚本(双击 .command 文件)时,以下是输出(从终端窗口复制):

earth.png
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
Copy was done...?
earth.png
Done, press ENTER to finish
Run Code Online (Sandbox Code Playgroud)

cp 总是给出“使用”错误,并且不会复制任何内容,但现在如果我在终端中按顺序手动运行相同的命令(终端窗口的副本):

Stans-Mac-mini:testFolder Stan$ ls
earth.png
Stans-Mac-mini:testFolder Stan$ cp earth.png lol.png
Stans-Mac-mini:testFolder Stan$ ls
earth.png   lol.png
Stans-Mac-mini:testFolder Stan$ 
Run Code Online (Sandbox Code Playgroud)

文件已复制,没有任何错误!请帮我解决这个问题,我在网上找不到任何解决方案,非常感谢您的帮助!

Lin*_*ple 5

当您引用作为一个字符串提供的源参数和目标参数时cp,它仅获取一个参数。
命令:

cp "earth.png lol.png"
Run Code Online (Sandbox Code Playgroud)

尝试复制一个具有该名称的文件"earth.png lol.png"(顺便说一句,这是一个完全有效的文件名),但无法提供第二个参数。
相反,引用每个单独的论点:

cp "earth.png" "lol.png"
Run Code Online (Sandbox Code Playgroud)