Вы не можете отключить его, но можете сдвинуть $2
в $1
:
$ set bon jour
$ echo "$1$2"
bonjour
$ shift
$ echo "$1$2" # $2 is now empty
jour
shift
сдвинет все позиционные параметры на единицу шаг ниже. Это обычное дело, например. циклы синтаксического анализа командной строки (которые не используют getopt
/getopts
) для сдвига позиционных параметров на каждой итерации при многократном изучении значения $1
.
Редко требуется сбросить позиционный параметр.
Между прочим, unset
принимает переменную name, а не ее значение, поэтому unset $1
фактически сбросит переменную bon
. ] (если он был установлен ранее).
Для этого вообще не нужен цикл оболочки:
awk '{$(NF+1) = NR==1 ? "Points" : $3*4 + $4*2; print}' OFS='\t' input.txt
Team Played Wins Tied Points
A 2 1 1 6
B 2 0 1 2
На простом bash вы можете написать:
while read -ra fields; do
if [[ ${fields[0]} == "Team" ]]; then
fields+=("Points")
else
fields+=( $(( 4 * ${fields[2]} + 2 * ${fields[3]} )) )
fi
# changes to IFS variable done inside a subshell
(IFS=$'\t'; echo "${fields[*]}")
done < "$1"