如何在Bash脚本命令中插入自定义变量,适配引号要求及JSON解析场景
方案实现
你不需要在变量定义时嵌套额外的引号,直接定义可变内容,引用变量时外层加双引号即可正确传递带空格的参数,两种常用场景写法如下:
场景1:在脚本头部固定定义可变参数
#!/bin/bash # 直接定义可变内容,无需额外嵌套引号 changing_stuff="Active-2021-xy Part YX" # 引用变量时外层加双引号,即可将内容作为单个带空格的完整参数传递 # 推荐用$()替代旧式反引号做命令替换,可读性更高且支持嵌套 total_number=$(Command_xy show base name "$changing_stuff" limit 1 --format json | jq '.total')
场景2:支持运行时交互输入可变参数
如果需要每次运行脚本时手动输入内容,用read命令接收输入即可:
#!/bin/bash # 提示用户输入内容,存到changing_stuff变量中 read -p "请输入要查询的名称: " changing_stuff total_number=$(Command_xy show base name "$changing_stuff" limit 1 --format json | jq '.total')
原写法误区说明
你之前给变量加'" "'包裹的写法是错误的:Bash只会解析命令行中直接写的引号作为参数边界标识,变量内部存储的引号会被识别为普通文本字符,会直接作为参数内容的一部分传递给目标命令,反而不符合预期。
如果要验证参数传递是否正确,可以在脚本中加一行测试命令:
echo "传递给命令的参数是:$changing_stuff"
确认输出内容和你之前硬编码的参数一致即可。
内容的提问来源于stack exchange,提问作者kandzsem
相关产品推荐
相关产品推荐

