連結到執行檔並刪除一些參數
我目前正在使用 Xamarin Studio,它在這個版本中有一個錯誤。它將 2 個參數添加到執行檔中,這會導致輸出中充斥著錯誤消息,從而將建構時間從一分鐘減慢到至少 10 分鐘。
有沒有辦法可以移動原始執行檔並創建一個 bash 腳本或連結,刪除 2 個有問題的參數,並將其放在它的位置?
因此 Xamarin 會像往常一樣執行該命令,但不會將 2 個有問題的參數傳遞給原始命令。
說它
/usr/bin/ibtool --errors --warnings --notices --output-format xml1 --minimum-deployment-target 7.0 --target-device iphone --target-device ipad --auto-activate-custom-fonts --sdk iPhoneSimulator9.0.sdk --compilation-directory Main.storyboard
,我想:
- 移至
ibtool
_ibtool_orig
- 放置一個連結或腳本代替
ibtool
,它會刪除有問題的參數並將其傳遞給ibtool_orig
,給我以下命令:
/usr/bin/ibtool_orig --errors --output-format xml1 --minimum-deployment-target 7.0 --target-device iphone --target-device ipad --auto-activate-custom-fonts --sdk iPhoneSimulator9.0.sdk --compilation-directory Main.storyboard
(注意ibtool
現在已經消失ibtool_orig
了--errors --warnings
)有任何想法嗎?
規範的方式是一個形狀像這樣的循環:
#! /bin/sh - for i do # loop over the positional parameters case $i in --notices|--warnings) ;; *) set -- "$@" "$i" # append to the end of the positional parameter # list if neither --notices nor --warnings esac shift # remove from the head of the positional parameter list done exec "${0}_orig" "$@"
您還可以替換
#! /bin/sh -
為ksh
、或路徑,並替換zsh
為so被傳遞為(它可能在其錯誤消息中使用或重新執行自身)。yash``bash``exec``exec -a "$0"``ibtool_orig``/path/to/ibtool``argv[0]