禁用histexpand和变量替换

时间:2017-02-08 13:47:14

标签: bash shell

我需要创建数千个文件,而且我无法控制需要用于路径和名称的文本字符串。麻烦的是,这些字符串可能包含“,”,“,”,!或$,所有这些都可能导致问题。

我可以用普通撇号替换所有引号,但我想保留任何$或!字符,到目前为止还没有能够计算出如何做到这一点。

Set + H将关闭历史记录扩展,但我无法在同一命令中使其工作。所以: -

set +H; echo "Hi, this is $10 Tom!"
由于!

仍会生成错误。如果我将它们作为2个单独的命令运行,则histexpand保持关闭并且它可以正常工作,但是它们两者都被运行它们;不会改变他的名字。

问题是命令将在他们自己的shell中运行,我似乎无法运行多行(Apple的JXA中的doShellScript),因此需要它们在由...分隔的同一行上。

那么如何才能使set + H坚持下一个命令?

另外,是否可以阻止shell在变量之前解释$并将其作为常规字符处理?我不能只用单引号引用整个字符串,因为它可能包含'本身。

建议?

0 个答案:

没有答案