Considere os scripts a seguir:
script.sh
#!/bin/bash
# Salva os argumentos posicionais.
var=$*
# Imprime o valor.
echo "args = $var"
bot.sh
#!/bin/bash
# Importando API
source ShellBot.sh
# Token do bot
bot_token='<TOKEN_AQUI>'
# Exemplo trabalhando com o modo de retorno do tipo: value
ShellBot.init --token "$bot_token" --monitor
ShellBot.username
while :
do
# Obtem as atualizações
ShellBot.getUpdates --limit 100 --offset $(ShellBot.OffsetNext) --timeout 30
# Lista o índice das atualizações
for id in $(ShellBot.ListUpdates)
do
# Inicio thread
(
# Remove os argumentos e avalia somente o comando.
# ${var%% *} - remove todas as expressões depois do primeiro espaço (inclusive).
# Exemplo: '/exec arg1 arg2 arg3' -> '/exec'
case ${message_text[$id]%% *} in
# Executa o script passando somente os valores.
# {var#* } - remove somente a primeira expressão antes do espaço (inclusive).
# Exemplo: '/exec arg1 arg2 arg3' -> 'arg1 arg2 arg3'
/exec) ./script.sh ${message_text[$i]#* };; # comando
esac
:
) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas.
done
done
Execute o script bot.sh.
./bot.sh
Envie o comando abaixo para o bot com a seguinte sintaxe:
/exec <valor1> <valor2> ...
obs: observe o retorno do script na saída padrão do terminal.