我想寫一個腳本foo
,它使用Bash或Perl簡單地調用bar
,它與調用的參數完全相同。如何獲取未修改的命令行參數來「換行」另一個命令行工具?
現在,一個簡單的方法在Perl中做到這將是
#!/bin/perl
my $args=join(' ', @ARGV);
`bar $args`;
然而,在ARGV的值已經被shell處理,因此,如果我叫
foo "I wonder, \"does this work\""
欄會這樣叫
bar I wonder "does this work"
如何獲取原始命令行,以便我可以簡單地傳遞它逐字?
其中一個考慮因素當然是
system()
的返回值是程序執行的返回值,而不是程序的輸出。如果您要收集輸出,可能需要將輸出重定向到文件並讀取文件。 – atk 2009-11-19 19:13:54@atk:在這種情況下,您可以使用進程句柄。 – Ether 2009-11-19 19:14:51
不,在這種情況下,你使用IPC :: Run或IPC :: Cmd – ysth 2009-11-19 20:37:10