bash удалить участников Slack из каналов с помощью xargs и спать?

Piense en cómo funciona su proceso de pensamiento para traducir de forma numérica a forma de prosa. ¿Qué miras primero? ¿Qué haces con esa información? ¿Existe un patrón en su flujo de trabajo que podría expresar en forma de procedimiento? ¿Cómo se puede dividir esto en pasos pequeños y discretos que sean análogos a los comandos disponibles para usted?

La línea de pensamiento anterior es la quintaesencia de la programación y el scripting.

Una vez que tenga el esqueleto del proceso en mente, escríbalo en "pseudocódigo" -palabras que tengan sentido para usted, si no para el shell --y avance a través de ese proceso, para asegurarse de que lo haga lo que quieres en lugar de solo lo que dices . Luego traduzca eso de su lengua materna a comandos de shell.

Por ejemplo, un buen punto de partida podría ser determinar cuántos valores posicionales tiene que indicar.Hay un par de formas de hacer esto que vienen inmediatamente a la mente :"¿cuántos dígitos tenemos?" o "¿es el número mayor que 99? ¿mayor que 9?" O incluso podría resolver que un sistema no necesita que usted resuelva esto primero.

En este caso, lo primero que necesita es la capacidad de hacer algunas operaciones aritméticas básicas en el shell y pruebas comparativas. entonces:

Digamos que hemos leído el número en una variable, number, y ya la cordura -lo verificó para asegurarse de que el usuario no ingresó -53o 3.14o albatrosso algo que No estoy queriendo analizar en realidad. Podemos empezar con:

output=""
if [[ "$number" -gt 100 ]]; then
    # okay, we know $number is greater than 100
    hundreds=$((number/100))
    case $hundreds in
        1) output="one" ;;
        2) output="two" ;;
        3) output="three" ;;
        # et cetera
    esac
    number=$((number-100*hundreds))
fi
output="$output hundred"

Y se puede construir a partir de ahí.

0
20.03.2019, 04:48
1 ответ

Поскольку у вас уже есть список в $@, в качестве альтернативы можно было бы перебрать его и заснуть на 50 -метках пакета:

#!/bin/bash
channel=$1
shift

index=0
while [ "$#" -gt 0 ]
do
  (( ++index ))
  curl #... --data... "user":"'"$1"'"
  (( index % 50 == 0 )) && sleep 60
  shift
done

Я опустил большую часть команды curl, чтобы было легче увидеть структуру того, что я предлагаю. Первое изменение заключается в переносе имени канала в отдельную переменную и удалении этого аргумента. Затем оставшиеся элементы $@являются именами пользователей.

Следующая часть представляет собой простой цикл while, который выполняется до тех пор, пока в $@остаются элементы. Каждый раз в цикле мы:

  • увеличить счетчик
  • вызов curlпо телефону$1
  • sleepесли мы должны
  • shiftот первого элемента$@
1
28.01.2020, 02:30

Теги

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