如何優化此代碼結構以避免重復代碼 ( git diff --ignore-space-at-eol -U0)?
while [ ! -z "$(git diff --ignore-space-at-eol -U0)" ]; do
diff_text=$(git diff --ignore-space-at-eol -U0);
echo $diff_text
done
在 PHP 中,它可以這樣完成:
while (! $diff_text = "git diff --ignore-space-at-eol -U0") {
echo $diff_text;
}
我們需要代碼,以便將diff_text變數減去 1 次。
uj5u.com熱心網友回復:
您可以在 while 條件塊中插入多條指令:
while
diff_text=$(git diff --ignore-space-at-eol -U0)
[ -n "$diff_text" ]
do
echo "$diff_text"
done
uj5u.com熱心網友回復:
使用帶有中斷條件的無限回圈在中斷回圈的比較之前添加命令:
while true; do
i=$(date)
echo $i
[[ "$i" =~ "9 " ]] && break
sleep 1
done
uj5u.com熱心網友回復:
一種選擇是使用設定diff_text變數的函式,如果它為空,則回傳非零值:
function set_diff_text
{
diff_text=$(git diff --ignore-space-at-eol -U0)
[[ -n $diff_text ]] && return 0 || return 1
}
while set_diff_text; do
printf '%s\n' "$diff_text"
done
另一種使用函式的方法是:
function get_diff_text
{
local difftxt
difftxt=$(git diff --ignore-space-at-eol -U0)
printf '%s\n' "$difftxt"
[[ -n $difftxt ]] && return 0 || return 1
}
while diff_text=$(get_diff_text); do
printf '%s\n' "$diff_text"
done
- 請參閱為什么 printf 比 echo 好?解釋為什么我使用
printf而不是echo列印git diff輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397150.html
