如何将Bash含变量扩展快捷方式的export语句转换为Fish语法?
将Bash的环境变量拼接逻辑转换为Fish语法
原Bash代码的作用是:当LIB环境变量已存在(非空)时,在其末尾添加冒号后拼接/example/lib;若LIB不存在,则直接设置为/example/lib。对应的Bash代码为:
export LIB="${LIB:-}${LIB:+:}/example/lib"
由于Fish不支持Bash这种参数展开语法,你可以用以下几种方式实现相同逻辑:
方法一:条件判断(直观易懂)
通过set -q检查变量是否存在,分情况设置:
if set -q LIB set -x LIB "$LIB:/example/lib" else set -x LIB "/example/lib" end
方法二:简洁的命令替换写法
利用Fish的命令替换实现 inline 判断:
set -x LIB "$LIB"(set -q LIB && echo :)/example/lib
方法三:用string join简化逻辑
Fish的string join会自动忽略空参数,用冒号连接非空的输入项,刚好匹配需求:
set -x LIB (string join : $LIB /example/lib)
以上三种方法都能实现和原Bash代码完全一致的效果,你可以根据自己的习惯选择。
内容的提问来源于stack exchange,提问作者Daniel YC Lin
相关产品推荐
相关产品推荐

