gpt4 book ai didi

bash - 将 globbing 的结果分配给 Bash 中的变量

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

我的同事 Ryan 带着他的 Bash 脚本中的错误来找我,我确定了这个测试的问题:

$ mkdir ryan
$ mkdir ryan/smells-bad
$ FOO=ryan/smells-*
$ echo $FOO
ryan/smells-bad
$ touch $FOO/rotten_eggs
touch: cannot touch `ryan/smells-*/rotten_eggs': No such file or directory

据此我推断通配发生在 echo 命令期间,而不是在创建变量 FOO 时。

我们有几个解决方法,按照不优雅的降序排列:

touch `echo $FOO`/rotten_eggs

或者:

pushd
cd $FOO
touch rotten_eggs
popd

但两者都不令人满意。我错过了一个技巧吗?

最佳答案

问题是 glob 只会在文件“rotten_eggs”存在时扩展,因为它包含在 glob 模式中。您应该使用数组。

FOO=( ryan/smells-* )
touch "${FOO[@]/%//rotten_eggs}"

FOO 数组包含与 glob 匹配的所有内容。使用 % 的扩展将/rotten_eggs 附加到每个元素。

关于bash - 将 globbing 的结果分配给 Bash 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229870/

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