我有一堆使用的一些命令和其他工具的shell腳本。如何檢索在shell腳本中使用的所有工具
那麼,有沒有一種方法,我可以列出的shell腳本正在使用的程序? 從源代碼中檢索依賴項的方式。你可以做到這一點
我有一堆使用的一些命令和其他工具的shell腳本。如何檢索在shell腳本中使用的所有工具
那麼,有沒有一種方法,我可以列出的shell腳本正在使用的程序? 從源代碼中檢索依賴項的方式。你可以做到這一點
用途sed
管道和$(
轉化爲換行符,然後使用awk
輸出第一字線,如果它可能是一個命令。進入which
的管道找到路徑中的potiential命令字:
sed 's/|\|\$(/\n/g' FILENAME |
awk '$1~/^#/ {next} $1~/=/ {next} /^[[:space:]]*$/ {next} {print $1}' |
sort -u |
xargs which 2>/dev/null
的一種方法是在運行時。您可以使用-x
選項在debug mode中運行bash腳本,然後解析它的輸出。所有執行的命令及其參數將被打印到標準輸出。
雖然我沒有通用的解決方案,你可以嘗試兩種方法:
因爲殼的動態特性,你不能沒有運行腳本做到這一點。
例如:
TASK="cc foo.c"
time $TASK
這將是真的很難確定,而不運行cc
被稱爲即使在這種簡單的例子如上。
在運行時,你可以檢查調試輸出sh -x myscript
由thiton(+1)和ks1322(+1)指出。你也可以像strace
這樣的工具來捕獲所有的exec()
系統調用。
您的問題不清楚,例如「解析工具」沒有意義。你在尋找腳本使用的程序列表嗎?或者使用你的腳本的程序列表? –
已更新的問題。我正在查找使用shell腳本的程序列表。 – deimus