Как сгруппировать несколько условий в операторе if в fish

Полагаю, вам придется разрезать отдельные куски, а затем соединить их. Не используйте для этого cat , так как коды времени будут повсюду.

Если видеофрагментами являются mp4 , используйте mp4box (из gpac пакетов) для конкатенации:

mp4box -cat vid1.mp4 -cat vid2.mp4 ... -cat vidN.mp4 -new vid1-N.mp4

-121--65792-

Можно проверить доступность прокси-сервера носков, попытавшись загрузить веб-сайт через туннель.

curl -sSf --socks5-hostname localhost:8888 www.google.com > /dev/null

В приведенной выше команде завитков будет скрыт, если не возникнет ошибка. Эту команду можно обернуть в цикл for в рамках сценария. Возвращаемое значение завитков равно нулю, если прокси-сервер носков активен (и google.com не выключен).

#!/bin/bash

set -o errexit
set -o nounset
#set -o xtrace

PROGNAME=$(basename $0)
die () {
  echo "${PROGNAME}: ${1:-"Unknown Error, Abort."}" 1>&2
  exit 1
}

status=0
while [[ 1 ]]; do
  curl -sSf --socks5-hostname localhost:8888 www.google.com > /dev/null || status=$?
  if [[ $status -ne 0 ]]; then
    echo "Trying to reconnect .."
    # kill proxy
    # reconnect-cmd || die "$LINENO: reconnecting failed"
  fi
  sleep 100
done

-121--63655-

http://www.unix.com/man-page/posix/1p/MAN/ Это 1p-страница для posix-программиста

http://www.unix.com/man-page/posix/1p/grep/ Это для grp 1p man page

3
27.02.2018, 14:53
2 ответа

También puede usarbeginyendpara condicionales:

De tutorial de peces:

For even more complex conditions, use begin and end to group parts of them.

Para un ejemplo más simple, puede echar un vistazo a esta respuesta de stackoverflow.

Para su código, solo tiene que reemplazar el (con begin ;y el )con ; end.

#!/usr/bin/fish

if begin ; false ; and true ; end ; or true
    echo "true"
else
    echo "false"
end

if false; and begin ; true ; or true ; end
    echo "true"
else
    echo "false"
end
6
27.01.2020, 21:15

Solución alternativa:subcontratar parte de la cadena condicional en una función

así:

#!/usr/bin/fish

function _my_and_checker
    return $argv[1]; and argv[2]
end
function _my_or_checker
    return $argv[1]; or argv[2]
end

if _my_and_checker false true ; or true
    echo "true"
else
    echo "false"
end

if false; and _my_or_checker true true
    echo "true"
else
    echo "false"
end

Esto tiene más sentido si las condiciones mismas son comandos complejos.

1
27.01.2020, 21:15

Теги

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