Другой подход заключается в использовании awk ассоциативных массивов, более подробная информация здесь . Эта строка создает требуемый выход:
awk -F '|' '{a[$1] += $3} END{print a["smiths"]}' filename.txt
В качестве побочного эффекта массив сохраняет все другие значения:
awk -F '|' '{a[$1] += $3} END{for (i in a) print i, a[i]}' filename.txt
Output:
smiths 212
denniss 100
olivert 10
-121--5981-
Оболочка знает, что ssh
умер и может сбросить терминал.
Отслеживание оболочки bash во время убийства ребенка ssh
показывает, что она выполняет несколько вызовов ioctl ().
--- SIGCHLD (Child exited) @ 0 (0) ---
ioctl(255, TIOCSPGRP, [52631]) = 0
ioctl(0, TIOCGWINSZ, {ws_row=25, ws_col=147, ws_xpixel=902, ws_ypixel=329}) = 0
ioctl(0, TIOCSWINSZ, {ws_row=25, ws_col=147, ws_xpixel=902, ws_ypixel=329}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {c_iflags=0x500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
ioctl(0, SNDCTL_TMR_STOP or TCSETSW, {c_iflags=0x400, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a31, c_line=0, c_cc[VMIN]=1, c_cc[VTIME]=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x00\x00\x00\x00"}) = 0
-121--108185-
По прошествии многих часов мне ясно, что лучше скопировать сценарий в целевую систему и выполнить его там.
d-i preseed/late_command string cp -a /cdrom/preseed/post-install.sh /target/post-install.sh; in-target /bin/bash /post-install.sh
Баш, в частности, принимает -
как синоним --
. В примерах, приведенных в ответе на вопрос,
#! /bin/bash -
это используется, чтобы сообщить Bash, что больше никаких опций не следует, так что шебанг работает независимо от имени скрипта --рассмотрим, например, что произойдет, если скрипт будет назван -l
.
Одиночный дефис по определению является аргументом типа файла, и после аргумента типа файла приложение, совместимое с POSIX, не может проверять параметры.
Двойное тире — это определение POSIX для конца опций. После этого разрешены только аргументы типа файла.
Таким образом, соглашение для обоих отличается, даже если это может привести к похожему результату.
Это не соглашение GNU, а POSIX.
Также обратите внимание, что принято писать:
#!/bin/sh -
или
#!/bin/sh -p
относится ко времени, когда ни специальный аргумент --, ни функция getopt(3)
не были известны.