【发布时间】:2015-09-04 05:54:35
【问题描述】:
我正在寻找一种方法(除了“.”、“.”、\.)来使用 bash(或任何其他 linux shell),同时防止它解析命令行的某些部分。问题似乎无解 How to interpret special characters in command line argument in C?
理论上,一个简单的开关就足够了(例如 -x ... string ... 不会被解释)但它显然不存在。我想知道是否有解决此问题的解决方法、技巧或想法。最初的问题是一个程序的脚本|别名,它以 youtube URL(可能包含特殊字符(& 等))作为参数。这个问题更加困难:扩展 "$1" 同时阻止 shell 解释扩展的字符串——本质上是扩展 "$1" 而不解释其结果
【问题讨论】:
-
我很难理解你的问题。你能举个例子吗?
-
从标准输入读取 URL,而不是从命令行读取。
-
如果要自动执行任务,则排除从标准输入读取 URL(请参阅我的问题的最后一句话)
-
从标准输入读取始终是一种选择。这就是管道的工作原理。如果您的脚本无法处理它,您可以使用
xargs让它发挥作用。 -
@jaamlysi 不,他们没有;你误解了哪一步发生了什么。当您的脚本获得
$1时,它已经被解析(即解释了特殊字符),现在返回并取消解析它为时已晚。使用$1时防止任何进一步的解析很容易——正如我所说,用双引号("$1")括起来。但这与撤消 shell 在调用脚本之前所做的解析不同,根本无法返回并撤消它。
标签: linux bash shell command-line command-line-arguments