如何在单引号嵌套的双引号中使用Bash变量(CEL场景)
解决方案
要在Passbolt的CEL过滤命令中嵌入Bash变量,你可以通过以下几种实用方式实现:
方法1:转义双引号并使用外层双引号
将整个--filter参数用双引号包裹,内部的双引号添加反斜杠转义,Bash会自动解析其中的变量:
# 定义目标文件夹ID变量 folder_id="your-actual-folder-id" # 构造并执行Passbolt命令 passbolt list resource --filter "FolderParentID == \"$folder_id\""
方法2:单引号拼接变量
利用Bash的字符串拼接特性,把变量部分用双引号包裹,前后用单引号拼接成完整的过滤条件:
folder_id="your-actual-folder-id" passbolt list resource --filter 'FolderParentID == "'"$folder_id"'"'
这段代码的拼接逻辑:'FolderParentID == "' 是一段单引号包裹的固定字符串,"$folder_id" 是解析变量的部分,'"' 是闭合的单引号字符串,三者拼接后正好符合CEL的格式要求。
方法3:用printf格式化过滤字符串
如果需要更直观的格式控制,可以先用printf生成符合要求的过滤字符串,再传入Passbolt命令:
folder_id="your-actual-folder-id" # 生成格式化后的过滤条件 filter_str=$(printf 'FolderParentID == "%s"' "$folder_id") # 执行Passbolt命令 passbolt list resource --filter "$filter_str"
内容的提问来源于stack exchange,提问作者Fejor
相关产品推荐
相关产品推荐

