Используя значение переменной в качестве кода выхода из сценария

Можно попробовать следующий awk:

awk 'BEGIN { FS = OFS = ","; } FNR == NR { x[$1] = $2; next; } { if ($7 in x) { $7 = x[$7]; } } 1' b.csv a.csv

В секции BEGIN устанавливаем разделитель полей FS и разделитель выходных полей OFS на ,. FNR == NR - паттерн, который является истинным при чтении первого файла (b.csv), и мы создаем массив x с ключами из столбца $1 и значениями из столбца $2. В последней секции мы читаем второй файл и проверяем, существует ли столбец $7 как ключ массива, и если да, то меняем значение.

1
04.05.2018, 21:05
2 ответа

Вы не можете использовать код выхода для того, что вам нужно, не в последнюю очередь потому, что код выхода представляет собой целое число от 0 до 255. Какое поведение вы бы хотели, если бы было 783 открытых файла?

Кроме того, такое использование принципиально нарушается тем, что вы полагаете, что код выхода, отличный от нуля , не является состоянием ошибки, что отдаленно не соответствует стандартам -.

2
27.01.2020, 23:32

Вам не нужно писать в файл. Просто пусть скрипт выводит результаты wc

#!/bin/sh
lsof /filesystem | wc -l

, а затем записать результат с помощью

openfiles=$(/path/to/openfiles.sh)

Если ваш скрипт не сложнее этого, просто добавьте его в ваш ~/.bashrc

alias openfiles='lsof /filesystem | wc -l'

, а затем

n=$(openfiles); echo $n
0
27.01.2020, 23:32

Теги

Похожие вопросы