2012-10-19 36 views
2

在bash中使用的getopt通常的例子是遵循

args=`getopt abo: $*` 
errcode=$? 
set -- $args 

是什麼最後一行實現?

+2

這是一個非常,非常糟糕的主意 - 人誰做這種情況正在改變'$ ./yourprog 「一些file.txt的」''到「$ ./yourprog 」一些「 「file.txt」'。參見相反http://mywiki.wooledge.org/BashFAQ/035 –

回答

4

​​解釋得很好。本質上,它是打破與多個標誌一個參數爲多個參數每個單標誌:

無論你打電話給你的腳本

script -ab 

set -- $args
script -a -b 

$1將是-a$2將是-b。它使處理更容易。

BTW,getopts好得多

3

set更新腳本的位置參數。

#! /bin/bash 
echo "$*" 
set -- $1 baz 
echo "$*" 

如果此腳本與/path/to/script foo bar調用,輸出爲:

foo bar 
foo baz 
+0

令我困惑的事情之一是'--'用於使所有參數被使用後更新位置參數,而不是解釋爲設置命令本身的參數。 – LopSae