Comandos opcionais para o script bash

2

Eu tenho um script Bash que define várias variáveis de ambiente e executa um programa. Eu quero uma dessas variáveis para alterar se eu executar o comando com um argumento debug .

Eu sei 100% como fazer isso no código Lua, mas o Bash não é Lua e eu ainda estou nos estágios iniciais de aprendizado.

Essencialmente, quando executo ./foo.sh , ele

export var1
export var2
export var3
program

Eu quero que não passe var1 se eu executar ./foo.sh debug

    
por Josh Raymond 29.09.2018 / 06:06

1 resposta

2

Alterar

#!/bin/bash

export var1="value1"
export var2="value2"
export var3="value3"

program

em

#!/bin/bash

if [ "$1" != "debug" ]; then
    export var1="value1"
fi

export var2="value2"
export var3="value3"

program

O primeiro argumento de linha de comando para o seu script estará disponível em $1 , e se essa não for a variável de ambiente debug , export the var1 .

A #! -line poderia opcionalmente ser alterada para #!/bin/sh , pois o script (como escrito acima) não usa nenhum recurso bash -específico.

Uma variação dos itens acima, que faz isso de forma diferente com uma matriz, sem realmente definir as variáveis no próprio script (somente para o program ao iniciá-lo):

#!/bin/bash

if [ "$1" != "debug" ]; then
    vars=( var1="value1" )
fi

vars+=( var2="value2" var3="value3" )

env "${vars[@]}" program

ou, para /bin/sh ,

#!/bin/sh

mode=$1

set -- var2="value2" var3="value3"
if [ "$mode" != "debug" ]; then
    set -- var1="value1" "$@"
fi

env "$@" program
    
por 29.09.2018 / 09:38