我有一个 bash 脚本,它将临时存储一个字符串并稍后在命令中使用它。问题是,很多时候字符串会包含!
或其他非字母数字字符,然后 bash 会按字面意思处理它们,并执行 bash 通常处理这些字符的操作。
因此,对于 的示例!
,它将尝试通过执行历史替换来运行命令。我知道对于这种特定情况,我可以用 启动脚本#!/bin/bash +H
,但我无法真正解释所有可能的字符,那么如何让 bash 按字面意思使用变量中的值呢?
例如:
var=u134y123!3q54wtgf..314/sa|asd
/path/to/command -option $var
在上面的例子中,我该如何让 bash 不认为我正在执行历史替换或 I/O 重定向(由于|
)?
答案1
答案2
不确定我是否正确理解了你的意思。对我来说似乎
var="u134y123ls -laq54wtgf..314/sa|asd"
echo "$var"
就可以了。输出:
u134y123ls -laq54wtgf..314/sa|asd