How can I check if a variable is empty or not in tcsh Shell?

后端 未结 3 719
借酒劲吻你
借酒劲吻你 2021-01-01 09:47

IF I have to check that if a variable is empty or not for that in bash shell i can check with the following script:

if [ -z \"$1\" ] 
then
    echo \"variabl         


        
相关标签:
3条回答
  • 2021-01-01 10:01

    EDIT: see comment below.

    if ( $?1 ) then
        echo "variable is empty"
    else 
        echo "variable contains $1"
    endif
    
    0 讨论(0)
  • 2021-01-01 10:03

    You can try this (found here):

    set name
    if ( ${%name} == 0 ) then
            echo " Variable name has 0 characters as value."
    endif
    

    Note that the person who posted this has the following signature:

    Standard advice: avoid csh family for scripting.

    Note: This will break if name is an environment variable.

    setenv name foobar ; set name ; echo '+++'$name'+++' ; unset name ; echo '==='$name'==='
    
    ++++++
    ===foobar===
    
    0 讨论(0)
  • 2021-01-01 10:18

    The standard warnings regarding use of tcsh/csh apply (don't use it for scripting, due to its inherent limitations), but here's the translation:

    if ( "$1" == "" ) then      # parentheses not strictly needed in this simple case
        echo "variable is empty"
    else 
        echo "variable contains $1"
    endif
    

    Note, though, that if you were to use an arbitrary variable name rather than $1 in the above, the statement would break if that variable weren't defined yet (whereas $1 is always defined, even if unset).


    To plan for the case where a variable, say $var, may not be defined, it gets tricky:

    if (! $?var) then       
      echo "variable is undefined"
    else
      if ("$var" == "")  then
          echo "variable is empty"
      else 
          echo "variable contains $var"
      endif
    endif
    

    The nested ifs are required to avoid breaking the script, as tcsh apparently doesn't short-circuit (an else if branch's conditional will get evaluated even if the if branch is entered; similarly, both sides of && and || expressions are seemingly always evaluated - this applies at least with respect to use of undefined variables).

    0 讨论(0)
提交回复
热议问题