2016-04-02 5 views
0

私は最近、シェルスクリプトについて学習してきた、と奇妙なエラーで困惑しています:シェルスクリプトCPが働いて(しかし、ターミナルでの作業)ではないのMac OS X

私の簡単なスクリプト(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は常に「使用状況」というエラーを与え、WONTコピー何でも、しかし今なら、私は(端末ウィンドウのコピー):

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$ 

ファイルはエラーなしでコピーされました。私はこれを解決するのを助けてください、私は解決策をオンラインで見つけることができませんでした、大いに感謝します!

+0

あなたは自己矛盾している必要があります。スクリプトでは、二重引用符を使用します。コマンドラインでは、あなたはしません。その不一致のために異なる結果が得られます。 –

答えて

3

cpに提供されているソース引数と宛先引数の両方を1つの文字列として引用すると、1つの引数のみが取得されます。その後、(途中で完全に有効なファイル名である)名前"earth.png lol.png"で一つのファイルをコピーするための

cp "earth.png lol.png" 

の試みが、2番目の引数を提供するために失敗します。
コマンド。
代わりに、引用個々の引数:

cp "earth.png" "lol.png" 
+0

ありがとう、これは私の時間を節約:) –

3

変更cpコマンド

cp "earth.png" "lol.png" 

cpコマンドのフォーマットは次のとおりですcp <from> <to>。あなたのコマンドはcp "<single-file>"のようです。 earth.pnglol.pngの両方が引用符で囲まれているため、1つのファイルになります。 2番目の引数がなく、 "使用エラー"の理由

関連する問題