在 Bash 脚本中回显变量时如何转义特殊字符?
How to escape special characters when echoing variable in Bash script?
Whosebug 同学,
我应该如何处理像这样的字符串中的转义特殊字符:
^VfAro@khm=Y)@5,^AyxPO[[jW#+Vg;Paj2ycIj8VUr5z1,}qR~JnK7r_0@$ov
我在一个变量中使用这个字符串,该变量通过管道传送到 Bash 脚本中的 cryptsetup luksOpen
:
echo "${string}" | cryptsetup luksOpen UUID={...}
但是在执行脚本时,我删除了一些字符。当回显 plain 字符串时,所有字符都会被保留。
我试过使用不同的变量封闭以及 printf "%q" 但没有任何可行的结果。
如果您 想要在 cryptsetup
的输入中添加尾随换行符:
s='^VfAro@khm=Y)@5,^AyxPO[[jW#+Vg;Paj2ycIj8VUr5z1,}qR~JnK7r_0@$ov'
printf '%s\n' "$s" | cryptsetup luksOpen
如果您不想要尾随换行符:
s='^VfAro@khm=Y)@5,^AyxPO[[jW#+Vg;Paj2ycIj8VUr5z1,}qR~JnK7r_0@$ov'
printf '%s' "$s" | cryptsetup luksOpen
在这两种情况下,当我们关心逐字节完美输出时,我们不使用 echo
。
Whosebug 同学,
我应该如何处理像这样的字符串中的转义特殊字符:
^VfAro@khm=Y)@5,^AyxPO[[jW#+Vg;Paj2ycIj8VUr5z1,}qR~JnK7r_0@$ov
我在一个变量中使用这个字符串,该变量通过管道传送到 Bash 脚本中的 cryptsetup luksOpen
:
echo "${string}" | cryptsetup luksOpen UUID={...}
但是在执行脚本时,我删除了一些字符。当回显 plain 字符串时,所有字符都会被保留。
我试过使用不同的变量封闭以及 printf "%q" 但没有任何可行的结果。
如果您 想要在 cryptsetup
的输入中添加尾随换行符:
s='^VfAro@khm=Y)@5,^AyxPO[[jW#+Vg;Paj2ycIj8VUr5z1,}qR~JnK7r_0@$ov'
printf '%s\n' "$s" | cryptsetup luksOpen
如果您不想要尾随换行符:
s='^VfAro@khm=Y)@5,^AyxPO[[jW#+Vg;Paj2ycIj8VUr5z1,}qR~JnK7r_0@$ov'
printf '%s' "$s" | cryptsetup luksOpen