Базовое поведение bash [closed]

с помощью bash вы можете сделать что-то вроде кода ниже :
Обратите внимание, что вам нужно будет использовать sed или что-то еще, чтобы переформатировать строку даты во что-то, что date примет, например:

"2017-05-13 15:44:20"
#!/usr/bin/env bash

last_run="2017-05-13 15:44:20"


function relative() {
    local last_unix="$(date --date="$1" +%s)"    # convert date to unix timestamp
    local now_unix="$(date +'%s')"

    local delta=$(( $now_unix - $last_unix ))

    if (( $delta < 60 )) 
    then
        echo "last run "$delta" seconds ago"
        return 
    elif ((delta < 2700))  # 45 * 60
    then
        echo "last run "$(( $delta / 60 ))" minutes ago";
    fi
}

relative "$last_run"
0
13.12.2016, 17:39
2 ответа

Что вы пытаетесь сказать? За | должна следовать другая команда, а bash показывает > , предлагая завершить конвейер.

Для выполнения обоих действий:

  • Вывести пустую строку в стандартный вывод.
  • Передать стандартный вывод в стандартный ввод.

    echo -n '' | cat

Здесь cat - это просто заполнитель для вашей второй команды, которая в данном случае просто отправляет свой stdin на свой stdout.

2
28.01.2020, 02:13

| - оператор для соединения двух команд.

cmd1 | cmd2

Запускает cmd1 и cmd2 параллельно со стандартным выводом cmd1 , подключенным к записывающему концу канала, и стандартным вводом cmd2 ] подключен к считывающему концу той же трубы.

В:

cmd1 |

Вам не хватает правой команды.

Оболочка сообщает вам, что, выдав дополнительное приглашение ( PS2 , по умолчанию > ), чтобы запросить оставшуюся часть вашей команды.

Если вы хотите, чтобы stdout echo был концом записи канала, а его stdin был концом чтения того же канала (но обратите внимание, что echo не делает ») t читать из его стандартного ввода), вам нужно будет использовать оболочку вроде yash , в которой есть оператор для этого (оператор перенаправления конвейера >> | ):

echo test 1>>|0

Это сообщает yash , чтобы создать канал и назначить конец записи для fd 1 (stdout) и конец чтения для fd 0 (stdin).

Опять же, в этом мало смысла.

6
28.01.2020, 02:13

Теги

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