1
#!/bin/bash
SOURCE="/C/MSDFFiles/IPFiles/Source"

WORKING="/C/MSDFiles/IPFiles/Working"

rm -rf ./Working/*

cp "$SOURCE/"* "$WORKING/" 2> /dev/null

echo "DONE"

すべてのファイルをソースから作業用にコピーしようとしていますが、機能していません。出力は完了していますが、ファイルが作業フォルダーに転送されていません

4

2 に答える 2

3

あなたの問題は、スクリプトの行末が Windows によって中断された結果である可能性があります。Linux の行末は常に\n(1 つの改行) ですが、Windows では\r\n(キャリッジ リターンの後に改行が続きます) です。

ここでは、パス宣言の後に改行文字がある可能性があります。スクリプトからキャリッジ リターン文字を削除すると、問題が解決するはずです。

を使用している場合は、コマンドvimを使用して、ファイル内のすべての印刷不可能な文字を表示できます:set list

于 2013-05-20T19:14:44.210 に答える
3

エラーメッセージから判断する

cp: ターゲット `\r' はディレクトリではありません

\rスクリプト ( is )の改行に問題があるようCarriage Returnです。Windowsでファイルを編集しましたか?

次のような方法でこれらの文字を削除できるはずです

recode ibmpc..latin1 script.sh

また

mv script.sh script.tmp
cat script.tmp | tr -d '\r' > script.sh
rm script.tmp

また

sed -i "s/\r//g" script.sh
于 2013-05-20T19:14:52.547 に答える