rewrite bash 4 ;;& operator (two step)

master
DrVanScott 10 years ago
parent 66b4a94bdf
commit 904b82bb58
  1. 21
      gitstatus.sh

@ -26,17 +26,26 @@ num_conflicts=0
num_untracked=0 num_untracked=0
while IFS='' read -r line || [[ -n "$line" ]]; do while IFS='' read -r line || [[ -n "$line" ]]; do
status=${line:0:2} status=${line:0:2}
while true while [[ -n $status ]]
do do
case "$status" in case "$status" in
#two fixed character matches, loop finished
\#\#) branch_line="${line/\.\.\./^}"; break ;; \#\#) branch_line="${line/\.\.\./^}"; break ;;
?M) ((num_changed++)); status=${status:0:1}"_" ;;
?D) ((num_changed++)); status=${status:0:1}"_" ;;
U?) ((num_conflicts++)); break ;;
\?\?) ((num_untracked++)); break ;; \?\?) ((num_untracked++)); break ;;
\ ?) break ;; U?) ((num_conflicts++)); break;;
*) ((num_staged++)); break ;; ?U) ((num_conflicts++)); break;;
DD) ((num_conflicts++)); break;;
AA) ((num_conflicts++)); break;;
#two character matches, first loop
?M) ((num_changed++)) ;;
?D) ((num_changed++)) ;;
?\ ) ;;
#single character matches, second loop
U) ((num_conflicts++)) ;;
\ ) ;;
*) ((num_staged++)) ;;
esac esac
status=${status:0:-1}
done done
done <<< "$gitstatus" done <<< "$gitstatus"

Loading…
Cancel
Save