在Shell脚本中引用路径

时间:2018-07-13 00:22:21

标签: bash shell scripting quoting

我有一个shell脚本,该脚本使用base64对值进行编码并将其存储在变量中。

encoded="$(cat $pathtofile|base64 -w 0)"

这一直有效,直到我最终得到一个带有特殊字符的$pathtofile。现在,我试图找出如何引用$pathtofile,以便cat获得正确的文件。当我这样做

encoded="$(cat '$pathtofile'|base64 -w 0)"

我最终遇到一个错误,因为它没有展开$pathtofile而是按字面意义打印。我尝试了其他几种组合,但它们均导致路径引用错误。

如何以引号$pathtofile结尾?

1 个答案:

答案 0 :(得分:4)

使用$(...)时可以嵌套双引号。

encoded="$(cat "$pathtofile" | base64 -w 0)"

对于价值而言,外部引号是可选的。在变量分配中不需要它们。如果需要,请删除它们。

encoded=$(cat "$pathtofile" | base64 -w 0)

此外,恭喜,您赢得了Useless Use of Cat Award

encoded=$(base64 -w 0 "$pathtofile")