以下是我的 crontab 条目
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /FinalSync.sh $(date --date="5 days ago" +%d_%m_%Y) || echo $? >> log
Run Code Online (Sandbox Code Playgroud)
日志文件中也没有错误
外壳脚本
#! /bin/sh
source=/Source/$1
destination=/Destination
folderParam=$(basename $source)
if /usr/bin/rsync -avh -r $source $destination; then
cp /FolderCopyStatus/Success /Status/Success_$folderParam
else
cp /FolderCopyStatus/Failure /Status/Failure_$folderParam
fi
Run Code Online (Sandbox Code Playgroud)
当我在命令行中使用时,脚本运行完美
sh /FinalSync.sh $(date --date="5 days ago" +%d_%m_%Y)
Run Code Online (Sandbox Code Playgroud) 以下命令在命令行中运行
rsync -avh -r /Source/09_03_2016/ /Destination/
echo $(basename !:3)
Run Code Online (Sandbox Code Playgroud)
输出 09_03_2016
但是当我在 shell 脚本中执行此操作时,它不起作用
#! /bin/bash
/usr/bin/rsync -avh -r /Source/09_03_2016 /Destination/;
echo $(basename !:3)
Run Code Online (Sandbox Code Playgroud)
输出!:3