gpt4 book ai didi

Bash:由于不需要的转义,脚本中的大括号扩展不起作用

转载 作者:行者123 更新时间:2023-11-29 08:52:27 25 4
gpt4 key购买 nike

我想在 bash 脚本中做这样的事情。我正在使用 bash 4.1.10

# rm -rf /some/path/{folder1,folder2,folder3}

从 shell 本身可以很好地工作(并且如预期的那样)。它会删除 3 个所需的文件夹,而其他所有文件夹保持不变。

当我将它放入脚本中时,一些不希望发生的事情发生了。比如我的脚本:

#!/bin/bash
set -x
VAR="folder1,folder2,folder3"
rm -rf /some/path/{$VAR}

当我执行这个脚本时,文件夹并没有被删除。

我认为这是因为发生了一些不需要的引用。使用 #!/bin/bash -x 的脚本输出:

rm -rf '/some/path/{folder1,folder2,folder3}'

由于 ' 标记,这当然不能成功。

我怎样才能让这个在我的脚本中工作?

最佳答案

根据 the man page :

The order of expansions is: brace expansion, tilde expansion, parameter, variable and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and pathname expansion.

因此,为了解决这个问题,添加另一个级别的扩展:

eval "rm -rf /some/path/{$VAR}"

关于Bash:由于不需要的转义,脚本中的大括号扩展不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com