我已经写了一个通用的unix脚本来从任何csv加载oracle表。现在csv中的分隔符(字段分隔符)可以是任何类似','或'|“或':'等。 因此,我试图明确地将delimeter作为参数传递给脚本,并且它对大多数的delimeters工作正常,但是当我尝试传递|那么它不会给我正确的结果,因为它将隐式转换为|传递“|”作为unix脚本的参数
ksh -x myscript csv_name |
#不工作
ksh -x myscript csv_name ,
#工作
请告诉我,如果有用于此的逃生?
什么秋后算账? '\ |'或'“|”'? – arkascha
试试'ksh -x myscript csv_name'\ |'' - 脚本可能会尝试在正则表达式中使用分隔符,并在'|'字符上跳转,这在正则表达式中有特殊含义。 – user4815162342
没有看到“myscript”很难回答。一旦“管道”字符进入shell脚本,几乎任何事情都可能出错。 需要考虑的一件事是将“管道”翻译成别的东西,然后在脚本中使用它。我建议这样做的原因是,外壳将会在你的每一步都与你相抗衡。即使你将它翻译成ctrl-a或其他东西,它也可能比试图逃避每一个正则表达式和每个变量扩展更容易,而只留下合法的“管道”。 –