Argumentos de linha de comando em shell script

20-08-2020
---

Argumentos de linha de comando em Shell Script

---

Os argumentos da linha de comando também são conhecidos como parâmetros posicionais.

Esses argumentos são específicos com o script de shell no terminal durante o tempo de execução.

Cada variável passada para um script de shell na linha de comando é armazenada nas variáveis ​​de shell correspondentes, incluindo o nome do script de shell.

---

Sintaxe:

./meu_script.sh ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 ARG9 ARG10

---

Elas também são conhecidas como variáveis ​​especiais fornecidas pelo shell. Existem algumas variáveis ​​mais especiais...

---

Variável Especial

---

Detalhes de Variável
$1 a $n

---

$1
são os primeiros argumentos, $ 2 é o segundo argumento até $ n n'ésimos argumentos. A partir do décimo argumento, você deve incluí-los entre colchetes como $ {10}, $ {11} e assim por diante

$0
O nome do próprio script

$$
Id do processo do shell atual

$*
Valores de todos os argumentos. Todos os argumentos estão com "aspas duplas"

$#
Número total de argumentos passados ​​para o script

$@
Valores de todos os argumentos

$?
ID de status de saída do último comando

$!
Id do processo do último comando

---

Script de exemplo

Os argumentos da linha de comando podem ser passados ​​logo após o nome do arquivo de script com espaços separados. Se algum argumento tiver espaço, coloque-o entre aspas simples ou duplas. Leia abaixo o script simples.

---

#!/bin/bash

### Print total de argumentos e seus valuores

echo "Total Argumentos:" $#
echo "Todos os valores de argumentos:" $@

## Argumentos de comandos
## podem ser acessados como:

echo "Primeiro->" $1
echo "Segundo->" $2

# Pode também acessar todos os argumentos em um array e usa-los em um script.

args=("$@")
echo "Primeiro->" ${args[0]}
echo "Segundo->" ${args[1]}

---

Linux comentários multiline

#!/usr/bin/env bash

##################

# nome: comentario-comentarios-multiline.sh
# autor: semanickz
# site: https://semanickz.wordpress.com/
# comentários sem cerquilha # ?
# usa
# : '
# e usa
# '.
# usa espaço e aspas simples
# para aprender executo este script

##################

clear

# --------------------------------------

# Exemplo de comentários multiline:

: ' .'

# --------------------------------------

: ' COMENTÁRIO .'

# --------------------------------------

: '

O script a

seguir calcula o

valor quadrado do

número, 5.

'

# --------------------------------------

: '

O script ...

aqui calcula...

... o quadrado do número 5.

'

# --------------------------------------

var=$((area=5*5))

# --------------------------------------

echo "O quadrado do número 5 é : "

echo "$var"

# --------------------------------------

# fim do script

Linux exemplos de cores no shell script bash

#!/bin/bash

##########################

# exemplo-bash-shell-script-cores.sh

##########################

: ' Aqui estamos testando fazer um comentário mais diferente sem usar # vamos ver como é isto agora ok? ok?

Você pode deixar seu script BASH mais bonito, colorindo sua saída. Use seqüências de escape ANSI para definir propriedades de texto como cores de primeiro plano e plano de fundo. Colorizing Shell - Use o seguinte modelo para escrever texto colorido:

---

echo -e "\e[CORmAmostra Texto\e[0m"

---

Exemplo:

echo -e "\e[1;32mTexto negrito verde\e[0m"

---

Exitem cores de texto, formato de texto e cores de fundo para serem usadas no Bash. As cores de texto tem uma numeração diferente das cores de fundo. A cor do texto, formato e fundo podem ser combinados e usados todos juntos.

---

Executo no terminal:

echo -e "\e[1;33;40m*** Texto negrito, amarelo, fundo preto ***\e[0m"

---

As cores de texto por exemplo, podem ser:

preto=30, vermelho=31, verde=32, amarelo=33, azul=34, púrpura=35, cyan=36, branco=37.

---

As cores de fundo mais usadas, comaçam a partir do número 40. Exemplos:

preto=40, vermelho=41, verde=42, amarelo=43, azul=44, púrpura=45, cyan=46, branco=47.

Então de 30 a 37 cores de texto. De 40 a 47 cores de fundo.

---

O texto em si pode ser normal=0, negrito/bold=1, sublinhado=4.

---

Por exemplo, fundo amarelo com texto vermelho é bem visível. Fundo branco com verde BOLD também.

---

.'

# TODO todo O TEXTO ACIMA NÃO VAI APARECER NA EXECUÇÃO DESTE SCRIPT?

clear

# abertura SEM FECHAMENTO
echo -e "\e[33;1m Hello World"

# bold effect - negrito
# abertura SEM FECHAMENTO
echo -e "\e[33;5m Piscando"

# blink effect - piscando
# abertura SEM FECHAMENTO
echo -e "\e[33;0m Hello World"

# back to normal - normal
# abertura SEM FECHAMENTO
echo -e "\e[33;31m Hello World"

# Red color - vermelho
# abertura SEM FECHAMENTO
echo -e "\e[33;32m Hello World"

# Green color - verde
# abertura SEM FECHAMENTO
echo -e "\e[33;33m Hello World"

# See remaining on screen - ver o restante na tela
# abertura SEM FECHAMENTO
echo -e "\e[33;34m Hello World"
echo -e "\e[33;35m Hello World"
echo -e "\e[33;36m Hello World"

# FECHAMENTO \e[0m

echo -e -n "\e[0m"

echo -e "\e[33;41m Hello World\e[0m"
echo -e "\e[33;42m Hello World\e[0m"
echo -e "\e[33;43m Hello World\e[0m"
echo -e "\e[33;44m Hello World\e[0m"
echo -e "\e[33;45m Hello World\e[0m"
echo -e "\e[33;46m Hello World\e[0m"

# back to normal - voltar ao normal
echo -e "\e[33;0m Hello World\e[0m"

echo #------------------------------

echo -e "\e[33;41m Hello World33\e[0m"
echo -e "\e[33;42m Hello World33\e[0m"
echo -e "\e[33;43m Hello World33\e[0m"
echo -e "\e[33;44m Hello World33\e[0m"
echo -e "\e[33;45m Hello World33\e[0m"
echo -e "\e[33;46m Hello World33\e[0m"

echo ""

# coment abaixo aparece ou não?

: '

# este último com fechamento faz o terminal voltar ao normal

.'

: '

# abaixo abertura de cor \e[33;0m fechamento de cor \e[0m

.'

echo -e "\e[33;0m Hello World \e[0m"

echo -e "\n# -------------- fim -------------- #\n"

# fim do script

Eis um bash shell script que uso no Nautilus

#!/usr/bin/env bash

################################

# um bash script para o Nautilus
# Título: 1a_TOUCH_.sh
# autor: semanickz
# site: https://semanickz.wordpress.com
# uso: clique no arquivo, chame o script
# pelo menu do Nautilus e arquivo tocado
# vai mudar de posição no gerenciador de arquivos
# a ficha caiu, agora vai!
################################

touch "$1"

# fim do script

Um bash shell script para o Nautilus

#!/usr/bin/env bash

######################

# titulo: 1Bb-CV-mp4-2-mkv.sh
# data: 07-05-2020
# bash shell script para o nautilus
# -------------------
# autor: semanickz
# -------------------
# site: https://semanickz.worpress.com
# -------------------
# -------------------
# obs: este script é para o gerenciador de arquivos,
# no meu entender, ele é direcionado a "UM E APENAS UM ARQUIVO EM
# QUESTÃO" neste caso o "$1".
# ele executa o serviço direto no arquivo.
# não aparece terminal nenhum. Você pode escrever
# vários tipos de scripts para um arquivo.
# por exemplo toda vez que encontrar um certo
# tipo de arquivo clica nele e o envia para determinado
# diretório, ou faz o que quiser com ele
# -------------------
# -------------------

######################

# 1 - sobrescreve metadata
exiftool -all= -overwrite_original -ext "$1" .

# 2 - converte para mkv
for f in "$1"; do
ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy -map 0 "${f%.*}.mkv"
done

# 3 - remove mp4
sleep 3

for f in "$1"; do
rm -f "$f"
done

# ---- até aqui para cima, tudo bem.

## 4 ajusta título e sobrescreve metadata # não funcionou para mim
#for f in "$1"; do
#mkvpropedit "$f" -e info -s title="${f::-4}"
#mkvpropedit "$f" --tags all:
#mkvpropedit "$f" -d title
#done

# --- pesquisar pela web...

# ----- alias do meu .bashrc # funcionou no lugar do item ## 4
source MKV3b-remov-metadata-mkv.sh

# fim do script

Bash script tar.xz usando a extensão do arquivo

#!/usr/bin/env bash

#######################

# Titulo: tarxz_pela_extensao.sh
# Autor: semanickz
# Versão: 0.0
# Email:
# Site: https://semanickz.wordpress.com/
# Data: 04-05-2020_04:29:31
# Distro: GNU/Linux
# Exemplo de uso:
# Objetivo:
# Variaveis:
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

#######################

# -------------------------------
## CRIAR ARQUIVO tar.xz A SUA ESCOLHA EM UM DIRETÓRIO com read -p e loop for
# -------------------------------
# QUER DIZER QUE COMPACTA ARQUIVOS PELA EXTENSÃO
# -------------------------------
# Explicando:
# em um diretório com os mais variados tipos de arquivos vai compactar somente
# os que você determinar a extensão.
# -------------------------------
# alias fortarxz='clear ; echo ":Esteja dentro do diretório em questão" ;\
# sleep 3 ; echo "" ; read -p "Digite o nome do arquivo.tar.xz : " NOME ;\
# read -p "digite a extensão do arquivo (Ex: .txt) : " EXT ;\
# echo "Executando : " ; sleep 2 ; echo "" ; tar -cvf "$NOME" *"$EXT" ;\
# echo Listando... ; ls -t | head ; echo'
# -------------------------------

clear

echo ":Esteja dentro do diretório em questão"
sleep 3
echo ""

read -p "Digite o nome do arquivo.tar.xz : " NOME

read -p "digite a extensão do arquivo (Ex: .txt) : " EXT

echo "Executando : "
sleep 2
echo ""

tar -cvf "$NOME" *"$EXT"

echo 'Listando...'
ls -t | head
echo ""

echo ':Feito!'
echo ""

# ---------------- fim do script

lista_conteudo_arquivo_7z.sh

#!/usr/bin/env bash

# Titulo: lista_conteudo_arquivo_7z.sh
# Autor: semanickz
# Versão: 0.0
# Email:
# Site: https://semanickz.worpress.com
# Data: 03-05-2020_23:46:25
# Distro: GNU/Linux
# Exemplo de uso: ./lista_conteudo_arquivo_7z.sh
# Objetivo:
# Variaveis: f
# TODO - indica uma tarefa a ser feita
# FIXME - indica um bug conhecido que precisa ser arrumado
# XXX - notícia, chama a atenção

# ------------------------------

# Você pode criar um alias com este script.

# alias cont7z='clear ; echo -e "\nListar conteúdo de arquivo 7z: \n" ; sleep 3 ; echo Local: ; pwd ; sleep 2 ; echo "" ; echo :Lista... ; ls -t | head ; sleep 2 ; echo "" ; read -p "Digite o nome com extensão do arquivo 7z : " CONT ; echo :Listando-Cont-7z: ; sleep 2 ; echo ; 7z l "$CONT" ; echo'

# ------------------------------

clear

echo -e "\nObjetivo: listar conteúdo de arquivo 7z: \n"
sleep 3

echo Local:
pwd
sleep 2

echo ""

echo :Lista...
ls -t | head
sleep 2

echo ""
read -p "Digite o nome com extensão do arquivo 7z : " CONT

echo :Listando-Cont-7z:
sleep 2

echo ""
7z l "$CONT"
echo ""

# fim do script

Bash shell script tar.xz que compacta, descompacta, divide e junta arquivos

#!/usr/bin/env bash

######################

# autor: semanickz
# email:
# test_comp_desc_split_join_tarxz.sh
# data 03-05-2020
# site: https://semanickz.wordpress.com

######################

clear

# ----------------------------------

echo -e "\n*** Abra o terminal onde está o arquivo a ser\
compactado. *** \n\nOBS: Para sair deste script tecle Ctrl+c"
sleep 2
echo ""

echo Local:
pwd
sleep 2
echo ""

echo -e "\n1- Confere os primeiros arquivos deste diretório... \n"
ls -t | head -15
sleep 2
echo ""

# -----------------------------------

echo ""

echo -e "\nOfereço 4 opções (serviços) tar.xz.\
Escolha um número e tecle Enter.\n"
sleep 3

echo -e "\n: Para compactar tecle 1 \n: Descompactar tecle 2 \n: Para dividir\
um arquivo compactado grande em pedaços de 1GB tecle 3 \n: Para juntar um\
arquivo dividido tecle 4 \n: Para sair tecle Ctrl+c : \n"
read INPUT

case $INPUT in
1)
echo -e "\nCompactando tar.xz :\n"
sleep 2
echo -e "Você digitou: $INPUT, compactando...\n"
echo :Listando...
ls -t | head -20
read -p "Digite o titulo do arquivo tar.xz. Ex.\
meu_arquivo.tar.xz : " FILE
echo -e "\nVocê digitou: $FILE\n"
sleep 2
echo ""
read -p "Digite o nome completo (com espaços entre eles)\
do(s) arquiv(os)/past(as) a ser(em) compactados : " ARQUIVOS
echo -e "\nVocê digitou: $ARQUIVOS\n"
echo :Listando...
ls -t | head -15
sleep 2
echo ""
sleep 2
tar -cJf "$FILE" "$ARQUIVOS"
echo -e "\nFeito! \n"
echo Confere:
ls -t | head
;;
2)
echo -e "\nDescompactando tar.xz\n"
sleep 2
echo -e "Você digitou: $INPUT\n"
echo :Listando
ls -t | head
sleep 2
read -p "Digite o nome do arquivo tar.xz. : " FILE
echo -e "\nVocê digitou: $FILE\n"
echo :Listando...
ls -t | head -20
sleep 2
echo ""
sleep 2
echo "\nExecutando...\n"
sleep 2
tar -xf "$FILE"
echo -e "\nFeito! \n"
echo Confere:
ls -t | head
;;
3)
echo -e "\nDividindo arquivo tar.xz"
sleep 2
echo -e "\nVocê digitou $INPUT\n"
echo :Listando...
echo ""
ls -t | head
read -p "Digite o nome do arquivo tar.xz. : " FILE
echo -e "\nVocê digitou: $FILE\n"
sleep 2
split -b 1024m "$FILE" "$FILE".part
echo -e "\nFeito! \n"
echo Confere:
ls -t | head
;;
4)
echo -e "\nJuntando arquivos tar.xz\n"
sleep 2
echo -e "Você teclou : $INPUT; juntando...\n"
ls -t | head
read -p "Digite o nome do arquivo SEM a ext .part : " FILE
echo -e "\nVocê digitou: $FILE\n"
sleep 2
echo Local:
pwd
sleep 2
cat "$FILE".parta* >backup.tar.xz.completo
echo -e "\nFeito! \n"
echo Confere:
ls -t | head
;;
*)
echo "\nEu só sei 1, 2, 3 e 4. Tente novamente,\
ou tecle Ctrl+c para sair.\n"
esac

# --------------------------- fim do script

Teste bash shell script telegram bot envia

#!/usr/bin/env bash

########################

# test_telegram_bot_envia_stickers.sh
# precisa do: 1) token, 2) chat_id, 3) código do sticker
# (acha com getupdates info de um sticker enviado a alguém)

########################

# ---- Variáveis ---- #

# TOKEN1=""

# URL_UP='https://api.telegram.org/bot"$TOKEN1"/getupdates'

# URLMSG="https://api.telegram.org/bot$TOKEN4/sendMessage"

# URL1="https://api.telegram.org/bot$TOKEN/sendMessage"

URL2="https://api.telegram.org/bot$TOKEN4/sendMessage"

# ------------------- #

clear

echo "*** Busque atualizações de bot e procure o id do bate-papo ***"

sleep 2

echo ""

read -p "Digite o Token de um bot : " TOKENUP

curl https://api.telegram.org/bot"$TOKENUP"/getUpdates

echo ""

echo "*** Colete informações... ***"

sleep 2

echo ""

# ------------------- #

read -p "*** Vamos ver os updates de outro bot? Tecle Enter ***"

read -p "Digite o TOKEN de outro bot : " TOKEN1

# ------------------- #

echo "Verificando..."

sleep 2

# curl "$URL_UP"

curl https://api.telegram.org/bot"$TOKEN1"/getupdates

echo ""

echo "*** Colete informações... ***"

sleep 2

echo ""

# ------------------- #

echo "*** Enviar sticker ***"

sleep 2

echo ""

read -p "Digite o token : " TOKEN3

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite o código do sticker : " STICKER

# ------------------- #

# --------------- ANOTAÇÕES:

# EXEMPLOS:

# para enviar stickers

# https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADflsDlKEqOOd72VLKAg

# https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id=&sticker="$STICKER"

# URL2='https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id=&sticker="$STICKER"'

# ------------------- #

# para enviar arquivos

# curl "chat_id=$CHAT_ID&sticker=$STICKER" https://api.telegram.org/bot"$TOKEN3"/sendDocument

# curl https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id="$CHAT_ID"&sticker="$STICKER"

# teste alterado para enviar stickers:

# ------------------- #

# teste - ou este...
curl -v -F "chat_id=$CHAT_ID&sticker=$STICKER" https://api.telegram.org/bot"$TOKEN3"/sendSticker

sleep 3

# teste - ou este...
curl https://api.telegram.org/bot"$TOKEN3"/sendSticker?chat_id="$CHAT_ID"&sticker="$STICKER"

# ------------------- #

echo "Confere..."

sleep 2

echo ""

curl https://api.telegram.org/bot"$TOKEN3"/getupdates

echo ""

echo "*** Telegram bot enviar mensagem ***"

echo ""

# URL2="https://api.telegram.org/bot$TOKEN4/sendMessage"

read -p "Digite o Token : " TOKEN4

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite a mensagem : " MSG

curl -s -X POST "$URL2" -d chat_id="$CHAT_ID" -d text="$MSG"

echo ""

echo ":Confere..."

curl https://api.telegram.org/bot"$TOKEN4"/getupdates

# fim do script

Bash scripts para bot Telegram

Linux bash scripts para usar em bots no Telegram.

---

#!/usr/bin/env bash

########################

# test_telegr_bot_send_stickers.sh
# precisa do: 1) token, 2) chat_id, 3) código do sticker
# (acha com getupdates info de um sticker enviado a alguém)

########################

# ---- Variáveis ---- #

# TOKEN1=""

# URL_UP='https://api.telegram.org/bot"$TOKEN1"/getupdates'

# ------------------- #

read -p "*** Vamos ver os updates do bot. Tecle Enter ***"

read -p "Digite o TOKEN do bot : " TOKEN1

# ------------------- #

echo "Verificando..."

sleep 2

# curl "$URL_UP"

curl https://api.telegram.org/bot"TOKEN1"/getupdates

echo ""

# ------------------- #

echo "*** Enviar sticker ***"

sleep 2

echo ""

read -p "Digite o token : " TOKEN

read -p "Digite o chat_id : "

read -p "Digite o numero do sticker : "

# ------------------- #

# EXEMPLO:
# <a href="https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADfyekzlsDlKEqOOd72VLKAg">https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADfyekzlsDlKEqOOd72VLKAg

curl https://api.telegram.org/bot"TOKEN"/sendSticker?chat_id="CHAT_ID"&sticker="TICKER"

# ------------------- #

echo "Confere..."
sleep 2

echo ""

curl https://api.telegram.org/bot"TOKEN1"/getupdates

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# test_bot_enviar_arquivo.sh

# telegram bot enviar arquivo. tem que ter token e chat_id

#################

clear

read -p "Digite o Token : " TOKEN

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite o nome/caminho do arquivo : " FILE

curl -v -F "chat_id=$CHAT_ID" -F document=@"$FILE" https://api.telegram.org/bot"TOKEN"/sendDocument

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# tgr_msg.sh

# telegram bot envia mensagem

#################

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

clear

read -p "Digite o Token : " TOKEN

read -p "Digite o chat_id : " CHAT_ID ; read -p "Digite a mensagem : " MSG

curl -s -X POST "$URL" -d chat_id="$CHAT_ID" -d text="$MSG"

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# trg_search_id.sh

# busque atualizações de bot e procure o id do bate-papo

#################

read -p "Digite o Token : " TOKEN

curl https://api.telegram.org/bot"TOKEN"/getUpdates

echo ""

# fim do script

---

Até breve!