我在尝试为 rclone 创建 bash 脚本时遇到问题
这给我一个错误:
20d: command not found
DAYS='20d'
PURGE='purge --min-age' ${DAYS}
rclone ${PURGE} ${DEST}/old/ $VERBOSE $LOGS
这有效
PURGE='purge --min-age 20d'
rclone ${PURGE} ${DEST}/old/ $VERBOSE $LOGS
有人可以帮我一下,这样我就可以使用第一个吗?如果其他人所要做的就是更改 DAYS,那么其他人就可以更轻松地使用此脚本
答案1
您对PURGE
变量的引用导致了这种情况。
目前您正在设置:
PURGE='purge --min-age'
进而执行 ${DAYS}
(20d)PURGE
其环境中的变量。
您可能想要:
purge=(purge --min-age "$days")
(与不带引号的变量相比,数组是保存命令行参数更安全的方法)
你会这样称呼它:
rclone "${purge[@]}" "${dest}/old" "$verbose" "$logs"
注意:环境变量只能使用大写变量名。
举个例子:
$ FOO=bar env | grep FOO
FOO=bar
$ env | grep FOO
$
我们将FOO
变量设置为bar
,然后env
在其环境中使用该变量执行命令。
您收到错误是因为20d
这不是有效的命令。