如何将三段Shell参数扩展代码合并为单次调用(无需始终存变量)
Shell代码合并优化方案
针对给出的三段Shell代码,我们可以将其合并为单次调用,同时满足「仅当输入不是"643"时执行转换」的需求,最终结果可直接用于JSON结构:
合并实现(无需分步存变量)
# 直接生成目标值,可按需嵌入JSON使用 target_value=$( if [[ "$value" != '"643"' ]]; then echo "$value" | tr -d '\n"' | awk '{print "\""$1"\""}' else echo "$value" fi )
逻辑说明
- 判断分支:用
[[ "$value" != '"643"' ]]判断输入是否需要转换,符合条件则执行转换逻辑,否则直接返回原输入 - 转换流程:
tr -d '\n"':一次性移除输入里的换行符和所有双引号awk '{print "\""$1"\""}':以空格为分隔符取第一个字段,再重新包裹双引号,得到符合JSON格式的字符串
直接嵌入JSON示例
如果不需要单独存储变量,可直接将转换逻辑嵌入JSON生成语句:
json='{"target_id": '"$( [[ "$value" != '"643"' ]] && echo "$value" | tr -d '\n"' | awk '{print "\""$1"\""}' || echo "$value" )"'}'
内容的提问来源于stack exchange,提问作者ThomasK
相关产品推荐
相关产品推荐

