在fish shell中如何正确拆分参数字符串?
在fish shell中如何正确拆分参数字符串?
这个问题我之前也碰到过,fish的命令解析逻辑确实容易在这里踩坑——当你直接把以-开头的字符串传给string split时,它会误以为那是命令自身的选项,而不是你要拆分的目标内容,所以才会抛出unknown option的错误。
给你两个简单靠谱的解决办法:
方法一:用--分隔选项与目标字符串
这是Unix类命令通用的小技巧,--会明确告诉命令:“后面的内容都是要处理的参数,不是我的选项”。执行以下命令就能正确拆分了:
string split " " -- "-r --run"
执行后你会得到预期的两个结果:
-r --run
方法二:通过变量传递目标字符串
把要拆分的字符串先存到变量里,再传给string split,fish就不会把变量里的内容误判为命令选项了:
set target_str "-r --run" string split " " $target_str
这个方法同样能得到正确的拆分结果。
简单总结下,核心就是要让string split清楚区分“自己的选项”和“要处理的目标字符串”,上面两种方法都能完美解决这个问题~
备注:内容来源于stack exchange,提问作者RHOOP
相关产品推荐
相关产品推荐

