2017-04-19 15 views
0

我有一個接受多個命令行參數($ 1,$ 2,...等)的bash腳本。啓動腳本的程序是,因爲我不會在這裏進入,將命令行參數作爲bash腳本解釋爲$ 1的一個字符串傳遞。這一個字符串包含所需參數之間的空格,但bash仍然將其解釋爲單獨的命令行參數。有沒有辦法告訴bash使用空格作爲分隔符來解析它的命令行參數?如何告訴bash腳本解析包含空格的單個命令行參數?

例如,如果argstring = 50 graphite downtick我想慶典看到$1=50$2=graphite$3=downtick,而不是$1=50 graphite downtick

+0

不要引用擴展,它會得到分詞(但它會分裂在每個空間,這可能不是你想要的,並且要小心globes。) – rici

+0

@rici我不明白是什麼你的意思是「不要引用擴張」。 –

+0

當您使用$ 1時。想必你在某個地方使用它。如果你想把它分成位置參數,你可以使用'set - $ 1'。如果你想以三個單詞將它傳遞給另一個命令:'other_cmd $ 1'。只要你不引用擴展('「$ 1」'),它就會分裂。 +但這是傳遞多個參數的不理想方式。) – rici

回答

1

只需在程序的頂部添加此行:

set -- $1 

更多信息有關setthe bash reference manual以及在this Stack Overflow answer中使用的另一個示例。基本上,它可以用來替換傳遞到腳本中的參數。

+0

完美。完全合作。我學到了一些新東西。 –