bash - Bash脚本远程执行sed命令
问题描述
我试图在远程机器上执行下面的脚本,但是在执行 sed 命令时输出没有添加 '\n'。但是,如果我在其正常工作之外执行相同的 sed 命令。我尝试在 sed 命令中添加 \$ ,而不是在输出中添加 \n 。有什么想法吗 ?
set -e
set -o pipefail
ssh "$host" << EOF
temp_working_dir=/tmp/working_dir
mycert_path=\${temp_working_dir}/mycert/
cert=\$(cat "\${mycert_path}"/cert.pem | sed 's/$/\\n/' | tr -d '\n')
echo "\$cert" > /tmp/cert
EOF
解决方案
逃跑是很累的。
您的 sed 脚本还需要一个转义反斜杠:'s/$/\\n/g'
set -e
set -o pipefail
ssh "${host}" << EOF
temp_working_dir=/tmp/working_dir
mycert_path=\${temp_working_dir}/mycert
cert=\$(sed 's/$/\\\n/g' "\${mycert_path}/cert.pem" | tr -d '\n')
echo "\$cert" > /tmp/cert
EOF
推荐阅读
- python - 用 Beautiful Soup 抓取 URL 并附加到列表
- javascript - 即使不存在递归函数,JavaScript 堆栈也会溢出
- php - 将 WooCommerce 结帐自定义字段保存为用户元数据
- python - 如何在 dask 中并行化嵌套循环
- flutter - Flutter:重新编辑列表时卡片大小不会改变
- javascript - 使用 JavaScript 获取 HTML 表单数据
- excel - 如何通过切片器选择数组索引
- swift - 为什么顶部和底部都有边框
- adtf - 插件描述生成器的用法?
- flutter - 允许用户继续在单个 TextForm 字段中输入