我正在动态创建 tcsh 脚本(使用静态语言)。我有一个<add-command-here>
包含一些命令的部分。我想要做:
echo <add-command-here>
我<add-command-here>
只是插入命令。该命令应按原样打印并且不进行评估。例如,如果它包含 env$PWD
我希望它打印$PWD
而不是实际路径。我想到用单引号括起来:
echo '<add-command-here>'
但如果命令已经有引号,它将不起作用,因为这里它说:
单引号内不能出现单引号。
我也不能使用双引号,因为它仍然会计算,并且如果命令已经包含双引号,它也会遇到相同的问题。
一些测试:
main.py --help
main.py -option1 $PWD
main.py -option1 '$PWD'
'main.py -option1 $PWD'
main.py -option1 "$PWD"
main.py -option1 "PWD 'hi'"
main.py -option1 "PWD \'hi\'"
我希望所有这些都按原样打印,这意味着如果输入是,则X
输出应该是X
。我猜我们需要转义每一个特殊字符。我将自己实现(只需将其视为一个黑匣子 - 执行此操作的某些函数)。我的问题只集中在策略上。这里解决这个问题的正确方法是什么?