jiabanl 发表于 2018-8-25 13:16:08

shell中的疑问之2

  在shell中变量是不区分类型的,也就是统一默认既是字符串型,这是好事 ,灵活,也不是好事,用起来不规范。
  直接切入正题,注意 如果引用变量请最好加双引号,否则会出现意外的问题。
  i=`ps -e|grep java|awk '{print $1}'`
  [ -z $i ] && echo $?
  0
  [ -n $i ] && echo $?
  0
  以上$i 为加双引号;再试试加双引号的
  [ -z "$i" ] && echo $?
  0
  [ -n "$a" ] && echo $?
  此时没有结果输出,&&的作用是,如果前面的命令执行为真,则后面的命令也执行;否则不执行。
  --------------------------------------------------------------------------------------------------------------------------------
  DST_TMP='/usr/local/sh/im'
  内有文件13.txt
  [ -f /usr/local/sh/im/* ] && echo ok
  ok
  [ -f "/usr/local/sh/im/*" ] || echo ok
  ok
  经过测试,是因为通配符*的影响,带通配符最好不要双引号。否则结果不对。

页: [1]
查看完整版本: shell中的疑问之2