bash 分配了散列值的变量
bash variable with hash value assigned
我有一个分配了哈希值的变量。例如:
hash=$qGqTE/jV$syM.7qpaKlCTsBXOYu2op/
现在当我在 bash 中执行 echo $hash
时 returns:
/jV.7qpaKlCTsBXOYu2op/
如何让散列值不转义任何字符?或者 echo $hash
return 整个字符串 $qGqTE/jV$syM.7qpaKlCTsBXOYu2op/
?
非常感谢任何帮助。
定义需要单引号:
$ hash='$qGqTE/jV$syM.7qpaKlCTsBXOYu2op/'
$ echo "$hash"
$qGqTE/jV$syM.7qpaKlCTsBXOYu2op/
没有单引号,shell进行变量替换,结果取决于</code>、<code>$qGqTE
、$syM
定义语句时的返回值已执行。
我还在 echo
语句中添加了双引号。这会阻止 shell 执行分词和路径名扩展。虽然散列值不太可能受这些影响,但使用双引号更安全。作为潜在问题的示例:
$ hash='/bin/le*'
$ echo $hash
/bin/less /bin/lessecho /bin/lessfile /bin/lesskey /bin/lesspipe
$ echo "$hash"
/bin/le*
如您所见,在本例中,echo $hash
执行路径名扩展和 returns 文件列表。然而,echo "$hash"
可以正常工作。为避免此类意外,最好将对 shell 变量的引用放在双引号中。
我有一个分配了哈希值的变量。例如:
hash=$qGqTE/jV$syM.7qpaKlCTsBXOYu2op/
现在当我在 bash 中执行 echo $hash
时 returns:
/jV.7qpaKlCTsBXOYu2op/
如何让散列值不转义任何字符?或者 echo $hash
return 整个字符串 $qGqTE/jV$syM.7qpaKlCTsBXOYu2op/
?
非常感谢任何帮助。
定义需要单引号:
$ hash='$qGqTE/jV$syM.7qpaKlCTsBXOYu2op/'
$ echo "$hash"
$qGqTE/jV$syM.7qpaKlCTsBXOYu2op/
没有单引号,shell进行变量替换,结果取决于</code>、<code>$qGqTE
、$syM
定义语句时的返回值已执行。
我还在 echo
语句中添加了双引号。这会阻止 shell 执行分词和路径名扩展。虽然散列值不太可能受这些影响,但使用双引号更安全。作为潜在问题的示例:
$ hash='/bin/le*'
$ echo $hash
/bin/less /bin/lessecho /bin/lessfile /bin/lesskey /bin/lesspipe
$ echo "$hash"
/bin/le*
如您所见,在本例中,echo $hash
执行路径名扩展和 returns 文件列表。然而,echo "$hash"
可以正常工作。为避免此类意外,最好将对 shell 变量的引用放在双引号中。