Converte arg para maiúsculas para passar como variável

5

Existe uma maneira de converter o argumento da linha de comando em maiúsculas e passá-lo como uma variável dentro do script que está sendo chamado?

Eg. ./deploy_app.csh 1.2.3.4 middleware 

deve converter o middleware em MIDDLEWARE e passá-lo como uma variável dentro do script, onde é necessária uma substituição de variável.

Eu sei que posso usar echo e awk para obter este resultado, mas tentando verificar se existe uma maneira sem usar essa combinação

    
por Innocentspirit 21.03.2017 / 17:15

2 respostas

12

Usando o bash (4.0+), dentro do script:

newvarname=${3^^}

Usando o tcsh:

set newvarname = $3:u:q

Usando o zsh:

# tcsh-like syntax:
newvarname=${3:u} # or just $3:u
# native syntax:
newvarname=${(U)3}

Usando tr em vez de recursos de shell (embora limitado a letras de byte único apenas em algumas implementações de tr como o GNU):

newvarname=$(printf "%s" "$3" | tr '[:lower:]' '[:upper:]')

Esta página resume muitos recursos de diferentes shells do UNIX, incluindo manipulação de texto: link .

    
por 21.03.2017 / 17:20
8

No Bash, você pode declarar uma variável como maiúscula com -u e, em seguida, converte automaticamente.

$ declare -u a
$ b=abcd
$ a=$b
$ echo $a
ABCD
    
por 21.03.2017 / 17:35

Tags