Macos 使用';猫;删除包含空格的文件名
我想在这里替换“cat”,这样源代码中的行项目就可以有空格,从而使这个Rsync脚本更易于移植(在OSX中) 请专家们提出建议,好吗?其他建议,以改善这也表示感谢!谢谢 丹Macos 使用';猫;删除包含空格的文件名,macos,shell,rsync,Macos,Shell,Rsync,我想在这里替换“cat”,这样源代码中的行项目就可以有空格,从而使这个Rsync脚本更易于移植(在OSX中) 请专家们提出建议,好吗?其他建议,以改善这也表示感谢!谢谢 丹 将文件名用引号括起来: cat "/tmp/path/file with spaces.txt" 类似地,在执行rsync时: rsync $options "$source" "$destin" 引号总是一个好主意。将文件名用引号括起来: cat "/tmp/path/file with spaces.txt" 类似
将文件名用引号括起来:
cat "/tmp/path/file with spaces.txt"
类似地,在执行rsync时:
rsync $options "$source" "$destin"
引号总是一个好主意。将文件名用引号括起来:
cat "/tmp/path/file with spaces.txt"
类似地,在执行rsync时:
rsync $options "$source" "$destin"
引用总是一个好主意。不要使用
cat
;使用while
循环和read
:
while read -r source; do
echo "Source: $source"
echo "Destination: $destin"
echo "rsync" $options $source $destin
if ! /opt/local/bin/rsync $options "$source" "$destin"; then
echo "ERROR: rsync $source failed with code $?"
fi
echo "-----------------------------------------------"
date "+%a %m-%d-%y %H:%M:%S"
echo "-----------------------------------------------"
done < /tmp/list.dat
读取-r源时;做
echo“源:$Source”
echo“目的地:$destin”
echo“rsync”$options$source$destin
如果/opt/local/bin/rsync$options“$source”“$destin”;然后
echo“错误:rsync$源失败,代码为$?”
fi
回声“----------------------------------------------------”
日期“+%a%m-%d-%y%H:%m:%S”
回声“----------------------------------------------------”
完成不要使用cat
;使用while
循环和read
:
while read -r source; do
echo "Source: $source"
echo "Destination: $destin"
echo "rsync" $options $source $destin
if ! /opt/local/bin/rsync $options "$source" "$destin"; then
echo "ERROR: rsync $source failed with code $?"
fi
echo "-----------------------------------------------"
date "+%a %m-%d-%y %H:%M:%S"
echo "-----------------------------------------------"
done < /tmp/list.dat
读取-r源时;做
echo“源:$Source”
echo“目的地:$destin”
echo“rsync”$options$source$destin
如果/opt/local/bin/rsync$options“$source”“$destin”;然后
echo“错误:rsync$源失败,代码为$?”
fi
回声“----------------------------------------------------”
日期“+%a%m-%d-%y%H:%m:%S”
回声“----------------------------------------------------”
完成
以下是完成的工作脚本,供感兴趣的人使用:
#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH
EMAILSUBJ="Rsync Results"
EMAILRECIP="admin@example.com"
EMAILSENDER="admin@example.com"
LOG="/Users/jdoe/Desktop/rsync-`/bin/date +%m%d%Y`.log"
EXCLUDELIST="/tmp/exclude.dat"
SOURCEFILE="/tmp/list.dat"
DESTINATION='/Users/jdoe/Desktop/DEST/'
RSYNC=/opt/local/bin/rsync
# Rsync options below:
ROPTIONS=(
-aNHxEh
--delete
--fileflags
--exclude-from=$EXCLUDELIST
--delete-excluded
--force-change
--stats
--protect-args
)
# Get started
{
echo "-----------------------------------------------"
echo "Start:" $0
echo "-----------------------------------------------"
date "+%a %m-%d-%y %H:%M:%S"
echo "-----------------------------------------------"
while IFS= read -r SOURCE; do
echo "SOURCE: $SOURCE"
echo "DESTINATION: $DESTINATION"
echo "rsync" "${ROPTIONS[@]}" $SOURCE $DESTINATION
$RSYNC "${ROPTIONS[@]}" "$SOURCE" "$DESTINATION"
RETCODE=$?
if [ $RETCODE -gt 0 ]
then
echo " "
echo "##########################################################"
echo "ERROR: rsync " $SOURCE "FAILED with code " $RETCODE
echo "##########################################################"
echo " "
fi
echo "-----------------------------------------------"
date "+%a %m-%d-%y %H:%M:%S"
echo "-----------------------------------------------"
done < $SOURCEFILE
echo "-----------------------------------------------"
echo "End:" $0
echo "-----------------------------------------------"
} >> $LOG 2>&1
# Send an email
(
echo "From: $EMAILSENDER"
echo "To: $EMAILRECIP"
echo "Subject: $EMAILSUBJ"
cat $LOG
) | /usr/sbin/sendmail -it
exit 0
#/bin/bash
路径=/bin:/usr/bin:/sbin:/usr/sbin导出路径
emailsub=“Rsync结果”
EMAILRECIP=”admin@example.com"
电子邮件发件人=”admin@example.com"
LOG=“/Users/jdoe/Desktop/rsync-`/bin/date+%m%d%Y`.LOG”
EXCLUDELIST=“/tmp/exclude.dat”
SOURCEFILE=“/tmp/list.dat”
DESTINATION='/Users/jdoe/Desktop/DEST/'
RSYNC=/opt/local/bin/RSYNC
#Rsync选项如下:
落差=(
-安赫
--删除
--文件标志
--exclude from=$EXCLUDELIST
--删除排除
--力量变化
--统计数据
--保护args
)
#开始
{
回声“----------------------------------------------------”
echo“开始:$0
回声“----------------------------------------------------”
日期“+%a%m-%d-%y%H:%m:%S”
回声“----------------------------------------------------”
当IFS=读取-r源时;执行
echo“源:$SOURCE”
回显“目的地:$DESTINATION”
回显“rsync”“${ROPTIONS[@]}”$SOURCE$DESTINATION
$RSYNC“${ROPTIONS[@]}”“$SOURCE”“$DESTINATION”
RETCODE=$?
如果[$RETCODE-gt 0]
然后
回声“”
在现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方########################
echo“错误:rsync“$SOURCE”失败,代码为“$RETCODE”
在现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方########################
回声“”
fi
回声“----------------------------------------------------”
日期“+%a%m-%d-%y%H:%m:%S”
回声“----------------------------------------------------”
完成<$SOURCEFILE
回声“----------------------------------------------------”
回音“结束:$0
回声“----------------------------------------------------”
}>>$LOG 2>&1
#发送电子邮件
(
回显“发件人:$EMAILSENDER”
echo“收件人:$EMAILRECIP”
echo“主题:$emailsub”
cat$LOG
)|/usr/sbin/sendmail-it
出口0
以下是完成的工作脚本,供感兴趣的人使用:
#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH
EMAILSUBJ="Rsync Results"
EMAILRECIP="admin@example.com"
EMAILSENDER="admin@example.com"
LOG="/Users/jdoe/Desktop/rsync-`/bin/date +%m%d%Y`.log"
EXCLUDELIST="/tmp/exclude.dat"
SOURCEFILE="/tmp/list.dat"
DESTINATION='/Users/jdoe/Desktop/DEST/'
RSYNC=/opt/local/bin/rsync
# Rsync options below:
ROPTIONS=(
-aNHxEh
--delete
--fileflags
--exclude-from=$EXCLUDELIST
--delete-excluded
--force-change
--stats
--protect-args
)
# Get started
{
echo "-----------------------------------------------"
echo "Start:" $0
echo "-----------------------------------------------"
date "+%a %m-%d-%y %H:%M:%S"
echo "-----------------------------------------------"
while IFS= read -r SOURCE; do
echo "SOURCE: $SOURCE"
echo "DESTINATION: $DESTINATION"
echo "rsync" "${ROPTIONS[@]}" $SOURCE $DESTINATION
$RSYNC "${ROPTIONS[@]}" "$SOURCE" "$DESTINATION"
RETCODE=$?
if [ $RETCODE -gt 0 ]
then
echo " "
echo "##########################################################"
echo "ERROR: rsync " $SOURCE "FAILED with code " $RETCODE
echo "##########################################################"
echo " "
fi
echo "-----------------------------------------------"
date "+%a %m-%d-%y %H:%M:%S"
echo "-----------------------------------------------"
done < $SOURCEFILE
echo "-----------------------------------------------"
echo "End:" $0
echo "-----------------------------------------------"
} >> $LOG 2>&1
# Send an email
(
echo "From: $EMAILSENDER"
echo "To: $EMAILRECIP"
echo "Subject: $EMAILSUBJ"
cat $LOG
) | /usr/sbin/sendmail -it
exit 0
#/bin/bash
路径=/bin:/usr/bin:/sbin:/usr/sbin导出路径
emailsub=“Rsync结果”
EMAILRECIP=”admin@example.com"
电子邮件发件人=”admin@example.com"
LOG=“/Users/jdoe/Desktop/rsync-`/bin/date+%m%d%Y`.LOG”
EXCLUDELIST=“/tmp/exclude.dat”
SOURCEFILE=“/tmp/list.dat”
DESTINATION='/Users/jdoe/Desktop/DEST/'
RSYNC=/opt/local/bin/RSYNC
#Rsync选项如下:
落差=(
-安赫
--删除
--文件标志
--exclude from=$EXCLUDELIST
--删除排除
--力量变化
--统计数据
--保护args
)
#开始
{
回声“----------------------------------------------------”
echo“开始:$0
回声“----------------------------------------------------”
日期“+%a%m-%d-%y%H:%m:%S”
回声“----------------------------------------------------”
当IFS=读取-r源时;执行
echo“源:$SOURCE”
回显“目的地:$DESTINATION”
回显“rsync”“${ROPTIONS[@]}”$SOURCE$DESTINATION
$RSYNC“${ROPTIONS[@]}”“$SOURCE”“$DESTINATION”
RETCODE=$?
如果[$RETCODE-gt 0]
然后
回声“”
在现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方########################
echo“错误:rsync“$SOURCE”失败,代码为“$RETCODE”
在现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场现场方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方########################
回声“”
fi
回声“----------------------------------------------------”
日期“+%a%m-%d-%y%H:%m:%S”
回声“----------------------------------------------------”
完成<$SOURCEFILE
回声“----------------------------------------------------”
回音“结束:$0
回声“----------------------------------------------------”
}>>$LOG 2>&1
#发送电子邮件
(
回显“发件人:$EMAILSENDER”
echo“收件人:$EMAILRECIP”
echo“主题:$emailsub”
cat$LOG
)|/usr/sbin/sendmail-it
出口0
我想他是问/tmp/list.dat
中包含的文件名是否有空格,而不是正在读取的文件名。啊。嗯,他仍然需要在他的rsync
中引用$source
。我想他问的是/tmp/list.dat
中包含的文件名是否有空格,而不是正在读取的文件名。啊。好吧,他仍然需要在他的rsync
中引用$source
。啊,这似乎现在起作用了。非常感谢。我在错误的地方完成了…干杯!啊,现在好像行了。非常感谢。我在错误的地方完成了…干杯!考虑使用数组来保存您的选项: