Como verificar se a string está em branco no tcsh

6

Como posso verificar se uma string está vazia no tcsh?

Antes de você pirar, não, eu não estou escrevendo scripts de shell com o tcsh. Estou perguntando porque quero usar isso no meu arquivo .tcshrc.

Especificamente, quero fazer o equivalente a este código bash no tcsh:

if [[ -z $myVar ]]; then
  echo "the string is blank"
fi
    
por Sildoreth 21.04.2015 / 00:48

3 respostas

7
if ("$myVar" == "") then
  echo "the string is blank"
endif

Observe que, em csh, é um erro tentar acessar uma variável indefinida. (De uma perspectiva de shell Bourne, é como se set -u estivesse sempre em vigor.) Para testar se uma variável está definida, use $?myVar :

if (! $?myVar) then
  echo "myVar is undefined"
else
  if ("$myVar" == "") then
    echo "myVar is empty"
  else
    echo "myVar is non-empty"
  endif
endif

Observe o uso de um if aninhado. Você não pode usar else if aqui, porque isso faria com que a condição "$myVar" == "" fosse analisada mesmo quando a primeira condição fosse verdadeira. Se você quiser tratar o caso vazio e indefinido da mesma maneira, primeiro defina a variável:

if (! $?myVar) then
  set myVar=""
endif

if ("$myVar" == "") then
  echo "myVar is empty or was undefined"
else
  echo "myVar is non-empty"
endif
    
por 21.04.2015 / 03:04
2

Você pode usar o teste (1). Por exemplo:

% test -z "$myVar" && echo "the string is blank"

ou

% [ -z "$myVar" ] && echo "the string is blank"

Ambos assumem que $ myVar está definido.

    
por 21.04.2015 / 00:55
0

Com tcsh , você pode usar a construção ${%var} para verificar o número de caracteres na variável var :

if (${%var} == 0) then
  echo 'var is empty'
endif
    
por 21.04.2015 / 06:17