【发布时间】:2022-10-17 09:16:24
【问题描述】:
该脚本基本上是为 jpg 文件轮询目录 /images 并将它们移动到新目录 /gallery/2022-06-14/ 同时还重命名(删除初始字符)。我计划添加另一个动作,如果现有时间在 000000 和 050000 之间,bash 脚本应该通过将renamed file path 作为参数来调用 python 脚本。
你能告诉它是否不能以这种方式使用if 的缩写形式吗?为什么它会出错?
find '/images' -maxdepth 1 -name '*jpg' -exec sh -c '''echo mv {} /gallery/$(date --date="today" '+%F')/$(basename {} | sed "s/^.\{,19\}//") && [[ ! ( `date +"%H%M%S"` < 000000 || `date +"%H%M%S"` > 050000 ) ]] && python3 python-script.py "/gallery/$(date --date="today" '+%F')/$(basename {} | sed "s/^.\{,19\}//")"''' \;
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
【问题讨论】:
-
当问题是关于
bash时,为什么要使用python标签?已移除。 -
您使用的是
sh,但[[是特定于bash的。将命令sh更改为bash可能会对此有所帮助。 -
顺便说一句,三引号 (
''') 在 shell 语法中不是一个东西。 shell 会将其解析为一个长度为零的带引号的字符串 (''),后跟一个普通的单引号 (')。
标签: bash