此命令有什么问题?接缝处可能有语法错误,但我看不到哪里:
sh -c 'mongodump --host mongo_db --gzip --db db $$(if [ $TYPE = "hour" ]; then echo "--archive=/backup/hour/$$(date +"%H").gz"; elif [ $TYPE = "day" ]; then echo --archive=/backup/day/$$(date +"%d").gz; fi)'
我需要根据TYPE变量设置存档名称。
/backup/hour/10.gz
/backup/day/1.gz
/backup/2017-09.gz
sh -c 'echo mongodump --host mongo_db --gzip --db db --archive="$(
case "$1" in
hour) f="%H";;
day) f="%d";;
month) f="%Y-%m";;
*) f="unknown"; set -- "";;
esac
date "+/backup/$1/$f.gz"
)"' x "$TYPE"
case
比长久可读 if/elif/elif...
x "$TYPE"
是通过“外”可变进SH体而不播放引用游戏的方法。在sh主体中,“ x”变为$ 0,而$ TYPE变为$ 1。$(...)
%
在date
格式字符串中放入非指令。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句