outer &
создает подоболочку. $!
дает PID этой подоболочки.
tail -f /dev/null
является дочерним элементом этой подоболочки, поэтому у него другой PID. Но вы можете сделать
exec tail -f /dev/null
вместо этого. Затем kill
попадает в tail
.
Другая возможность заключается в использовании /bin/kill
вместо встроенной оболочки. С отрицательным числом в качестве аргумента вы можете убить всю группу процессов:
/bin/kill -TERM -$!
На самом деле правильный подход — считать сзади. На GNU awk
можно попробовать
awk -F ";" '{last=NF; while ($last ~ /^[[:space:]]*$/) last--; new=last+1; $new=$last; $last="StaticValue"; print}' in.csv > out.csv
, который определит последнее «не -пустое» поле путем сопоставления RegExp и вставки --точно так же, как вы сделали --«статическое значение» перед этим.
Для mawk
требуется небольшая модификация синтаксиса:
awk -F ";" '{last=NF; while ($last ~ /^ *$/) last--; new=last+1; $new=$last; $last="StaticValue"; print}' in.csv > out.csv
Все, что вам нужно, это:
$ awk '{gsub(/;/,FS); $NF="StaticValue " $NF} 1' file
Test User StaticValue WKCVW432994
Test Users Middlename StaticValue WEJDFH34992
Test Some Weird Guy StaticValue WEFDJJ23453
Test Some Even Weirder Guy StaticValue WEFDJJ23453
Описанное выше будет работать при использовании любого awk в любой оболочке на каждом компьютере UNIX.