gpt4 book ai didi

fish - 在 fish shell 的命令中使用存储在一个变量中的多个参数

转载 作者:行者123 更新时间:2023-12-01 04:37:53 24 4
gpt4 key购买 nike

我想将一组存储在变量中的参数传递给 fish shell 脚本中的内置命令。例如,像这样:

set params "-h -d 1"
du $params

我希望上面的内容等同于

du -h -d 1    

但是,事实并非如此。它会导致错误:“du: illegal option --”

如果我只是将 params 设置为 -h-d 1 但不是两者都有效,它确实有效。

我找到的一种解决方法是

eval du $params

但这似乎...错了,过分了。有什么更清洁的方法吗?

最佳答案

只需删除引号即可。

这样的东西在 POSIX shell(如 bash)中起作用的原因是因为“word splitting”。当您使用不带引号的变量时,该值会被替换,然后沿着 IFS 变量中的字符(通常是制表符、换行符和空格)拆分。

在fish中,一开始就用数组来分隔元素。碰巧的是,唯一需要的更改是删除引号:

set params -h -d 1
du $params

关于fish - 在 fish shell 的命令中使用存储在一个变量中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46856158/

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