2011-03-28 30 views
2

這裏嵌套命令行意味着一個命令的輸出是另一個命令的輸入。例如下面:如何簡單地執行Linux嵌套命令行?

$ CmdA 

output1 output2 output3... 

現在我想運行CmdB使用CmdA的輸出作爲參數。因此,如何運行CMDB簡潔,而不是使用

$ CmdB output1 output2 output3...

我現在有一個實際的問題:

$ python-config --cflags --ldflags 

-I/usr/include/python2.7 -I/usr/include/python2.7 -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv 
-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic 

正如你看到的,也有從命令python-配置產生了許多項目。如果我編譯.cpp源文件,我必須編寫所有項目,如

gcc test.cpp -I/usr/include/python2.7 -fno-strict-aliasing -02 -g -pipe........-o test,所以我只是想找到一個簡單的方法來執行調用者命令。

感謝提示!

回答

0

這是你在說什麼?

$ cmdA | while read line; do cmdB $line; done 
+2

聽起來像是他在尋找反引號,因爲這是「蟒蛇 - 配置」如何打算使用。 – 2011-03-28 02:40:03

4

您可以通過使用反引號或$()給參數給另一個命令:

$ uname -r 
2.6.38-020638rc5-generic 
$ ls /lib/modules/`uname -r`/ 
build    modules.builtin.bin modules.inputmap modules.softdep 
initrd    modules.ccwmap  modules.isapnpmap modules.symbols 
kernel    modules.dep   modules.ofmap  modules.symbols.bin 
modules.alias  modules.dep.bin  modules.order  modules.usbmap 
modules.alias.bin modules.devname  modules.pcimap 
modules.builtin modules.ieee1394map modules.seriomap 
$ ls /lib/modules/$(uname -r)/ 
build    modules.builtin.bin modules.inputmap modules.softdep 
initrd    modules.ccwmap  modules.isapnpmap modules.symbols 
kernel    modules.dep   modules.ofmap  modules.symbols.bin 
modules.alias  modules.dep.bin  modules.order  modules.usbmap 
modules.alias.bin modules.devname  modules.pcimap 
modules.builtin modules.ieee1394map modules.seriomap 
$ 

嘗試gcc test.cpp $(python-config --cflags --ldflags) -o test