如何强制 bash 从字面上使用变量中的值?

如何强制 bash 从字面上使用变量中的值?

我有一个 bash 脚本,它将临时存储一个字符串并稍后在命令中使用它。问题是,很多时候字符串会包含!或其他非字母数字字符,然后 bash 会按字面意思处理它们,并执行 bash 通常处理这些字符的操作。

因此,对于 的示例!,它将尝试通过执行历史替换来运行命令。我知道对于这种特定情况,我可以用 启动脚本#!/bin/bash +H,但我无法真正解释所有可能的字符,那么如何让 bash 按字面意思使用变量中的值呢?

例如:

var=u134y123!3q54wtgf..314/sa|asd
/path/to/command -option $var

在上面的例子中,我该如何让 bash 不认为我正在执行历史替换或 I/O 重定向(由于|)?

答案1

这都是关于引用的。单引号 !并按|字面意思存储它们。双引号 $var

var='u134y123!3q54wtgf..314/sa|asd'
/path/to/command -option "$var"

答案2

不确定我是否正确理解了你的意思。对我来说似乎

var="u134y123ls -laq54wtgf..314/sa|asd"
echo "$var"

就可以了。输出:

u134y123ls -laq54wtgf..314/sa|asd

相关内容