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(一个换行符),但在 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 回答