Executar script Bash, da pasta aberta ao código de saída
03
Executar um script
Executar um script Bash com argumentos no WSL ou via SSH
Um script Bash pode ser iniciado de três formas: bash script.sh arg1 arg2, ./script.sh após chmod +x, o que funciona por causa da linha shebang, ou através do builtin exec, que substitui o shell e nunca retorna. A primeira forma é a mais fácil para começar, pois não exige alteração de permissão. Shell executa o comando no ambiente que você escolheu, que é WSL no seu PC ou um sistema Linux que você possui alcançado via SSH, e o card no chat mostra a saída real e o código de saída. Você decide os argumentos, então pode testar o caso normal e o caso de falha em uma única conversa. As pessoas frequentemente perguntam qual forma escolher: use bash script.sh enquanto testa, porque funciona mesmo quando o arquivo não tem permissão de execução, e mude para ./script.sh assim que o script estiver finalizado e começar com a linha shebang. Independentemente da forma usada, o status de saída é o mesmo número, de 0 a 255, e 0 sempre significa que o script terminou com sucesso.
01
Abrir a pasta
Escolha a pasta que contém seu script como a pasta de trabalho; ferramentas de arquivo como read_file e grep funcionam dentro dela. Ferramentas de arquivo funcionam dentro dessa pasta, enquanto Shell, web e SSH não estão limitados a ela.
02
Escolher um modo de aprovação
Use Ask first para ver cada alteração como um diff, ou Plan only para ler um plano primeiro. Auto-run age imediatamente. Ask first pausa apenas antes de ações que alteram algo.
03
Pedir uma execução
Descreva a execução em palavras simples, por exemplo: execute o script com o argumento test. Nomeie WSL ou seu servidor se você tiver ambos. Nomeie o script e seus argumentos exatamente.
04
Ler o resultado
Abra o card para ver a saída e o código de saída real, depois aceite ou rejeite qualquer edição. Um número diferente de zero é informação. Execute novamente após cada edição aceita. Compare com o resultado que você esperava.
Um pequeno script de exemplo
Pageferry · Executar o exemplo● Ask first
Execute greet.sh com o argumento test, depois sem nenhum argumento.
Shellbash greet.sh testexit 0
Shellbash greet.shexit 2
read_filegreet.shread
grepUsage1 match
aguardando sua aprovação antes da próxima etapaRejeitarAceitar
greet.sh
#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
echo "Usage: $0 NAME [COUNT]" >&2
exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
echo "Hello, $name ($i)"
done
exit 0
greet.sh para com uma linha de uso e código de saída 2 quando o nome está faltando, aceita uma contagem opcional com um padrão de 1, e apenas imprime saudações em um loop. Leia-o uma vez antes de executá-lo: não há sudo, nenhum download e nada que mova ou exclua um arquivo, então é seguro testar em qualquer máquina que você possua. Linha por linha: a shebang nomeia o interpretador, set -eu para em erros e variáveis não definidas, o teste de $# conta os argumentos, e o loop for apenas ecoa.
Executar um script em quatro pequenos passos
Criar o arquivo de script
Comece com uma pasta de trabalho vazia. Peça ao agente para escrever o exemplo acima, e write_file cria greet.sh nessa pasta. Abra o card e leia o arquivo linha por linha: a primeira linha é a shebang que nomeia o interpretador, set -eu para o script em erros e variáveis não definidas, e a verificação de $# protege o resto da falta de um nome. Sob Ask first, o novo arquivo aguarda seu OK antes de ser escrito. Nada foi executado ainda. O branch de uso deste script escolhe 2 para uso incorreto, que é uma convenção comum. Aceite o arquivo apenas quando entender cada linha, e se não entender, peça ao agente para explicá-lo. Uma edição rejeitada deixa a pasta inalterada.
Executar e ler o código de saída
Pessoas que buscam por “bash execute script” geralmente querem uma linha: bash greet.sh test. Peça ao agente para executá-lo, e Shell inicia o comando no ambiente do seu chat, como WSL, e envia de volta a saída real e o código de saída real. Expanda o card para a saída completa. Depois, peça a mesma execução sem o argumento, e você deve ver a linha de uso e o código de saída 2. O código de saída para aplicações cli é um número de 0 a 255 que o chamador lê, e 0 significa sucesso. Código de saída 127 significa que um comando não foi encontrado e 126 significa que um arquivo não pode ser executado, então esses dois números apontam para um erro de digitação, um programa faltando ou uma permissão de execução faltando.
Ler os argumentos dentro do script
read_file mostra o script e grep encontra onde $1 e $2 são usados, então você pode verificar se cada argumento tem um padrão ou uma mensagem de erro. Aqui está como analisar argumentos opcionais: o script faz loop com getopts, e com apenas um ou dois valores, os plain $1 e ${2:-1} são suficientes. Aliases com argumentos não se comportam como funções, porque um alias apenas substitui a palavra digitada por texto, então use uma função quando os valores devem ir no meio. Peça ao agente para alterar uma coisa, por exemplo o padrão da contagem, e leia o diff que edit_file mostra. Depois, execute o script novamente e compare o novo código de saída com o antigo. Plan only pode listar os parâmetros que o script entende sem executar nada.
Executar o mesmo script em um servidor que você possui
Os mesmos passos funcionam quando o ambiente de trabalho é um sistema Linux que você possui, alcançado via SSH. Ferramentas de arquivo continuam funcionando na pasta de trabalho do chat, enquanto comandos Shell são executados no ambiente que você escolheu, então verifique a qual card se refere. O builtin exec, que as pessoas procuram como “bash exec script”, substitui o shell por outro comando e nunca retorna, então nada após ele é executado e o código de saída é o do novo comando. Mantenha uma cópia antes de um script mover ou excluir arquivos, execute-o com echo primeiro como uma execução seca, e use apenas máquinas que você tem permissão para administrar. Leia o card final antes de fechar o chat. Quando você encaminha todos os valores para outro comando, escreva "$@" entre aspas duplas para que cada valor mantenha sua forma.