的我有文件名,我想通过stow
被忽略的阵列,例如构建一个外部程序的命令行标志出的bash阵列
IGNORES=('post_install\.sh' 'dummy')
(实际上,该名单是不固定的但从文件读取并不总是具有相同的长度,所以像下面的硬编码将无法工作)。
我形成命令行标志出数组的像这样
IGNORES=("${IGNORES[@]/#/--ignore=\'}")
IGNORES=("${IGNORES[@]/%/\'}")
当我做
stow -v "${IGNORES[@]}" -t $home $pkg
然而,忽略不被平放尊重,但它并没有抱怨无效的参数无论是。直接写
stow -v --ignore='post_install\.sh' --ignore='ignore' -t $home $pkg
虽然工作。
这两种方式传递--ignore
标志有什么区别,有什么想法如何解决这个问题?据我的理解,"${IGNORES[@]}"
应评估为每个数组元素一个单词,并具有预期的效果(我试图删除引号和索引与*
阵列,但也无济于事)。
谢谢!
在'post_install.sh'中转义'.'是不必要的,但是如果您没有另外引用文件名则无害;在内部引号中,您正在向名称添加文字反斜杠。 – chepner
这是我需要验证的一件事。 'man stow'表示这些名字被解释为perl正则表达式,它们需要在文件名的末尾匹配,所以我认为我需要避开这个点才能使模式正确(尽管一个点当然会匹配任何包括一个点的字符,但那不是我想要的)。 – Wisperwind
啊,是的,这是不同的。 – chepner