如何将含星号(*)的命令输出存储到变量中?
问题解决:变量中的星号被自动替换为目录文件列表
原因
这是Shell的路径名扩展(通配符展开)导致的:当你未用引号包裹变量直接输出时,Shell会把变量中的*识别为通配符,替换成当前目录下的所有非隐藏文件列表。
解决方法
使用双引号包裹变量,即可保留变量的原始内容,避免通配符被展开。
复现场景的修正命令
cronExpression=$(echo "33 * * *") && echo "$cronExpression"
执行后会输出预期结果:33 * * *
针对Vault命令的正确用法
你的原始捕获命令secrets=$(vault read kv/data/secrets)本身是正确的,已经把包含*的输出存入变量了。后续使用该变量时,只需用双引号包裹:
echo "$secrets" # 或者传递给其他命令时 some_command "$secrets"
内容的提问来源于stack exchange,提问作者Thamaraiselvam
相关产品推荐
相关产品推荐

