#!/bin/bash
SOURCE="/C/MSDFFiles/IPFiles/Source"
WORKING="/C/MSDFiles/IPFiles/Working"
rm -rf ./Working/*
cp "$SOURCE/"* "$WORKING/" 2> /dev/null
echo "DONE"
すべてのファイルをソースから作業用にコピーしようとしていますが、機能していません。出力は完了していますが、ファイルが作業フォルダーに転送されていません
あなたの問題は、スクリプトの行末が Windows によって中断された結果である可能性があります。Linux の行末は常に\n
(1 つの改行) ですが、Windows では\r\n
(キャリッジ リターンの後に改行が続きます) です。
ここでは、パス宣言の後に改行文字がある可能性があります。スクリプトからキャリッジ リターン文字を削除すると、問題が解決するはずです。
を使用している場合は、コマンドvim
を使用して、ファイル内のすべての印刷不可能な文字を表示できます:set list
。
エラーメッセージから判断する
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