#!/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
(一个换行符),但在 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