Можно ли удалить подпроцессы bash из этой команды без использования цикла?

Проведя небольшое исследование по этой теме, я обнаружил, что существующие среды рабочего стола вызывают проблему (они рисуют рабочий стол поверх корня -рабочий стол или что-то в этом роде. Проверьте это для получения дополнительной информации ).
Поэтому я искал больше информации об этой проблеме и нашел кое-что на панели запуска . Все еще не могу решить мою проблему.
Наконец нашел что-то полезное на форуме linux mint и блоге lifewire . Итак, вот что я сделал, чтобы увидеть гуляющих (и веселящихся )пингвинов на моем рабочем столе.
1. Установите openbox, используяsudo apt install openbox obconf
2. Выйдите из текущего сеанса и запустите сеанс openbox. (в Linux Mint я могу сделать это, нажав session -> openbox, а затем войдя в систему ).
3. Щелкните правой кнопкой мыши -в любом месте и запустите терминал. Введите xpenguins(, если он еще не установлен, сделайте это, выполнив sudo apt install xpenguins), и эти пингвины появятся без проблем. 4. Чтобы убить этих милых маленьких пингвинов, нажмите CTRL-C.

0
14.09.2020, 00:06
3 ответа

Еще немного погуглив, я нашел этот хороший фрагмент awk-скрипта:

printf '%s\n' "${clients[@]}" | awk '{print length}' | sort -nr | head -1

1
18.03.2021, 23:05

Я нахожу функции довольно приятными, если вы открыты для -не одного -линейного решения:

length() {
    echo ${#1}
}
map() {
    func=$1
    shift
    for arg; do
        $func "$arg"
    done
}
max() { 
    read -r max
    while read -r arg; do
        (( arg > max )) && max=$arg
    done
    echo $max
}

, а затем

map length "${clients[@]}" | max 
1
18.03.2021, 23:05

Использование конвейера означает выполнение команды в подоболочке. Вы можете избежать этого с помощьюawk:

awk -v RS="[[:space:]]" 'length > len {len = length} END {print len}' <<<${clients[@]}

Только GNU awk:

awk -v RS="[[:space:]]" '{D[NR]=length}; END {asort(D); print D[NR]}' <<<${clients[@]}
1
18.03.2021, 23:05

Теги

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