使用Linux shell变量作为带空格的命令参数

cclgggtu  于 2023-03-17  发布在  Linux
关注(0)|答案(1)|浏览(214)

我使用的是synology DS 218,希望创建一个脚本来调用jdupes,它会自动排除特定的目录。

jdupes -rA -X nostr:"somepath/with spaces" -X nostr:"and/some other path" "/mydir"

但是将-X nostr:"somepath/with spaces" -X nostr:"and/some other path"部分保存在一个变量中,因为我在脚本中多次调用jdupes,并且只希望在一个位置保存排除的目录。
这是我尝试的基础:

excluded_path='-X nostr:`somepath/with spaces`'

jdupes -rAm $excluded_path "/mydir"

我尝试了不同的版本,例如

excluded_path="-X nostr:'somepath/with spaces'"
excluded_path="-X nostr:/"somepath/with spaces\""
excluded_path='-X nostr:"somepath/with spaces"'

还有一些,每次我尝试使用带有和不带有“”的$excluded_path时

h5qlskok

h5qlskok1#

应将命令行参数存储在数组中。

excluded_path_args=(-X "nostrum:somepath/with spaces")

jdupes -rA "${excluded_path_args[@]}"

就shell而言,-X及其参数nostrum:somepath/with spaces是两个独立的参数(jdupes决定了这些参数的含义以及如何使用它们)。扩展"${...[@]}"确保在构建自变量列表时将每个元素视为不同的字。

相关问题