问题的上下文是我试图将其中包含单引号的密码短语传递给 openssl 配置文件的 input_password 参数。
可以使用任何类型的引号或 \ 字符来转义某些字符。通过使一行的最后一个字符为 \,一个值字符串可以分布在多行中。此外,还可以识别序列 \n、\r、\b 和 \t
我假设可以转义单引号。问题是我很难用 sed 生成转义的单引号。
有了这个,我的意思是,如果从脚本或命令行运行,以下表达式不会产生相同的结果。执行以下命令:
cut -d: -f2 "$EMPLOYEE_CREDENTIALS_FILE"| sed -e "s|'|\\\'|g"
其中 "$EMPLOYEE_CREDENTIALS_FILE" 是一个格式如下的文件
username:password
当我直接在 bash 中运行此命令时,它会产生我假设 openssl.conf 允许的输出:
tentacle caravan sovereignty appraisal sass\'s
当我在脚本中运行它时,它只会产生正常的未转义密码:
tentacle caravan sovereignty appraisal sass's
我想知道我做错了什么。