为什么sed使用shell变量失败,但使用它们的值成功?

为什么sed使用shell变量失败,但使用它们的值成功?,shell,sed,Shell,Sed,我想使用sed将yaml文件中的特定字符串替换为base64编码的tls密钥: TLS_KEY=`cat tls.key | base64` sed -i "s/##TLS_KEY##/${TLS_KEY}/" 02-elastic-tls.yaml 然后我得到这个错误: sed: -e expression #1, char 90: unterminated `s' command 但是如果我在上面的命令中直接用它的值替换${TLS_KEY},它将成功 执行echo${TLS\u KEY}

我想使用
sed
将yaml文件中的特定字符串替换为base64编码的tls密钥:

TLS_KEY=`cat tls.key | base64`
sed -i "s/##TLS_KEY##/${TLS_KEY}/" 02-elastic-tls.yaml
然后我得到这个错误:

sed: -e expression #1, char 90: unterminated `s' command
但是如果我在上面的命令中直接用它的值替换
${TLS_KEY}
,它将成功

执行
echo${TLS\u KEY}:

LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZB QVNDQktjd2dnU2pBZ0VBQW9JQkFRRENtUHJVa29ibGpKT3oKOGJtMHZodzNwRHdLa0M2TGJaUjd5 enFWVkpuc2VTQkI4Z0E3aExkYmNBRDJTTWp6SDBQUEpEelE1elJ5dnJBYQpSK3N3QU1BeFhwQVdH Ulp5S2RsTkVTTDhuREZvNGJ2ODB1enQrdWZiSEFZTGl2OVByMHpRRnA2cjh5U3BlTXNkCm5xNnh1 K3ZaMHJ1ZWpxdkxhZEVSMFNra0h1VUp4bExGVjY1bzFFREdzYzhKVlBYaXFFUzdRcXhTTnhtS0Nt VzAKdFdMbWd6YUZ2d2tjcFpHbWJjTmpsMFZraG9ZTjFVZk51M0FURHJ3eUJQUmZIYWJvVGFSVlFm WmE5Q3dpSThPZgpXVzR0ZnA3eW9GcFRhSDlURUdxYldzY1VMa3MvamdlbW15eHZPY1Y0bG04SXgw dHhLT2J1R0ZWVGp2dlBnb0JuCnJLb2V5UVMzQWdNQkFBRUNnZ0VBUjEwV3o1SVV5bVh0WE5aUEJr dVp5WVgvUnRodFdWQ01YWUhBTURkZ1kycGcKUEE3bHF1NFcxLytST3NDaWdSWjhKYURpZExIMWVB Y2FTZWtLQlFhaGRQbDYyYi9GallSdlhtWGtjTU5QRTJtRgpLVWlvL3ZVK3hnblc1YkRKeEkxREhD VFBkN3VwUEVWQ0o5Q2p2Q1p3YmVkc1NzK0RqUXQzVXBOa0JRMFhiYWViCkpTVnk2ellCckFVOGZN cTV3empmTUFKVk0yZ0VaK3JYMERxc003T0IvRVpIWEI4dktkc3RKbCtWSmZWNnVBVjAKbTkxZnFG MzZmVGZYbWlxL29qMjZqdVZ1MkRBaVhqQWZQUzBRalVhOFRjVW1ZeFp4NVVaa052YWs2aGFwM1ND TwpXS2VjM0l4TWpra2xldUY0RGlBWHJHRnQ2WGxHN0RCQm13SUkrM3NRb1FLQmdRRHo2dk9HaUdn cVNQZHNaZ2lKCnd5NHhjT0JkZjRFbzRrZG9HYmduWEZ5eCtPSzczRThHZWZxdExMdjlzc2YxUUpC dmFkdFhZU21uNU5lNFBMNVoKTlFPcWxRSFhGcHhqcFA5WUxhbmdnRGR3S2ZzSVRxWnA0SDZLV0k5 aEdFeCtGcmRmUzlDY2JTTkpQcGk4dHhNVwpaV0gyeXUrZXZSS0VYYUZmMFZUZ1VMcHFUd0tCZ1FE TVBKMGVwVFg5WDluemY4Qi9VVkhKWnQ4V3dZY0Mzc1pBCnZkWUNSZFdYSm5RWE0zR2dxRTF1OGx2 dlZXNWZrMWdDNnlFWTlBdUZ1bCtGM1VoTVdRTlRhTWVpWHVCUEpJUVQKdEREalJQRmJXRGFyalo4 K0hrVXJObGdtVFEweVNhNzV1RVVhZWhqeDFjTkpLcCswSDZiQVNSRWdwWWpzdVhJSQpsaUk3ZGw5 dEdRS0JnUUNLZHA2bGlUdXdmVmxQUktDbUs1RkdhYkJFQTBSN3cvQUxMVVozdVp1NVAvTGQ5OU00 CmR2Z1JaR3FYT3V6OTBSZnMxeWUzYzZXazlHaHM0cmFmaDFPOGV2ZmZkS3QwZVU2bWJNMlpicytK c1pzYWZTTkUKeVRhc0xGZkFJMzRRdWE2QXYxWDk1b3A0WXJ0cnJYVjlhakh4V2dRcWxXUTBsYjRz MlhVWUhWdWxTd0tCZ0Q4Mwo2L0tXZFJYTzI2b1J1MFl0cDhGTnhIUkl4ei9PTVZQTTd6ZVk0anA5 UHFZSDJINUFXbWVqUVczZDVlSlR1NFI3CnY2ejNyYkZoTlR3OGVLcVpTdnhBakxybjMwcmdKTG5z cHMxU2c5c2dmUnV4SkwrWG94VnpKdW9FSTdlVE0wUTkKRTdiVVlIQkxHTDNISWRRaGovNHBIOUla S3o4TFVBNzBXZmhKOWRQUkFvR0FjNG5XYnU4Q0tFRzBPSCtmKzYrSAo1bnNmaDc3UUhiZEJLK2Za ZXQybFhrMjREUUlxUGZCVUR6clpINTVxenZPb2Z5T2tRbzI3cGZBT1gwS1l6dHBECm54cUVWd2kr WHhOaTAvRUxSSTdEanc5KzF4TkQ0N3NZTFhyd2dMZHpWQWtRengrSXM4Y3JGQU9iMi92cGNNYm0K RU4wNzJOV1lXUy9LZllzdXQ0Z2ZONVE9Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K

那么我为什么会出现这个错误呢?

请注意
echo${TLS\u KEY}
echo“${TLS\u KEY}”之间的区别

我怀疑您的密钥中存在换行符,它会中断
sed

$ echo abc | sed "s/abc/$x/"
sed: -e expression #1, char 7: unterminated `s' command

注意
echo${TLS\u KEY}
echo“${TLS\u KEY}”
之间的区别

我怀疑您的密钥中存在换行符,它会中断
sed

$ echo abc | sed "s/abc/$x/"
sed: -e expression #1, char 7: unterminated `s' command

是产生错误的
TLS\u KEY
的最短值吗?是产生错误的
TLS\u KEY
的最短值吗?是的,我应该禁用base64的自动换行功能。谢谢。是的,我应该禁用base64的自动换行功能。非常感谢。