Shell脚本cp无法正常工作(但在终端中工作)Mac OS X.

时间:2016-04-02 05:56:48

标签: 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"

每当我运行脚本(双击.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

cp ALWAYS提供了一个'用法'错误,WONT复制任何东西,但现在如果我手动运行SAME精确命令,按顺序在终端(终端窗口的副本):

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$ 

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

2 个答案:

答案 0 :(得分:3)

更改cp命令

cp "earth.png" "lol.png"

cp命令格式为:cp <from> <to>。你的命令就像cp "<single-file>"一样。 earth.pnglol.png都在引号内,并使其成为单个文件。缺少第二个参数,这就是&#34;使用错误的原因&#34;

答案 1 :(得分:3)

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

cp "earth.png lol.png"

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

cp "earth.png" "lol.png"