Если результатом команды echo $0
является -bash, это означает, что bash был вызван в качестве оболочки входа в систему. Если на выходе только bash, то вы находитесь в оболочке, не предназначенной для входа в систему.
Поскольку ENV
срабатывает, чтобы показать желаемый вывод, он выдает /bin/bash
[root@dcconnect ~]# env | grep -i SHELL
SHELL=/bin/bash
Out put of echo #SHELL
извлекается из переменной ENV
awk -F'^' -v OFS='^' \
'{
for (i = 1; i <= NF; i++) {
if ($i == "") $i = save[i]
else save[i] = $i
}
for (i = NF+1; i <= 99; i++) save[i] = ""
print
}'
Здесь используется массив с именем save
для сохранения значений из одной строки в другую (заполнение вниз).
Все в awk
неявно инициализируется нулевым значением,
поэтому массив save
будет пустым, пока ему не будут присвоены данные.
(Таким образом, любые пустые поля в первой строке будут оставлены пустыми,
, потому что нет предшествующих данных для копирования в них.)
Для каждой строки,
для (i = 1; i <= NF; i ++)
),
Затем удалите массив save
для всех столбцов
, которых нет в текущей строке.
Например, когда мы переходим к строке 4 (в которой всего четыре поля),
мы «забываем», что столбцы 5 и 6 строки 3
содержали «Сингапур» и « Нью-Дели".
И когда мы переходим к строке 7 (которая имеет только одно поле),
мы «забываем», что столбец 2 строки 5 содержал «Бангкок»,
поэтому он недоступен вводится в строку 8 (где столбец 2 пуст).
Замените 99
на максимальное количество полей, которое вы ожидаете увидеть в одной строке (когда-либо).