我们有一个脚本(脚本1)调用另一个脚本(脚本2),它希望用引号括起来传递。
随之而来的是并发症,因为script2还带有许多参数,其中一些是空格分隔的字符串,另一个是sql脚本。
这会导致script1失败。
隔离运行script2按预期工作。 当script2的参数没有任何空格分隔的字符串时,Script1有效。
看哪:
<script1> "<script2 -s "ExchangeRates" <sqlscript.sql>"
按预期工作。
然而:
<script1> "<script2 -s "Exchange Rates" <sqlscript.sql>"
失败了:
SP2-0734:未知命令开始“费率”@ / h ......“ - 其余行被忽略。
即。它将“交换”和“费率”视为两个单独的字符串。
所以,我试图逃避空间:
<script1> "<script2 -s \"Exchange Rates\" <sqlscript.sql>"
但是得到完全相同的问题。我可以想象,解决这个问题的方法可能就是盯着我看,简直太简单了,但我看不出来。
感谢任何建议。
由于
答案 0 :(得分:0)
你应该逃离这个空间。或者使用两种不同的报价。
答案 1 :(得分:0)
脚本1应该是这样的:
#!/bin/sh
"$@" ## Expands multiple arguments properly regardless of spaces.
要运行它,你应该正确传递参数:
script1 script2 -s 'Exchange Rates' sqlscript.sql
在script1
内,命令仍会被调用为
script2 -s 'Exchange Rates' sqlscript.sql