FreeABC
记忆重叠

shell代码片段

hello world程序

  #!/bin/sh
  str="hello world"
  echo $str        #使用echo来打印
  echo "shell, ${str} "

数字

  num=3       #数字
  str2=${str}" is ok "${num}  #字符串连接
  echo $str2

数学计算

  num1=4
  i=$(($num*$num1))   #我更倾向于使用这个来进行数学计算
  echo $i
  j=$(expr $num + $num1)
  echo $j
  k=$(expr $num * $num1)
  echo $k

if语句

  if [ $num1 == 4 ];then
     echo "num is 4"
  fi
  
  num2=2;
  if [ $num2 == 4 ]; then
    echo "num2 is 4 "
  elif [ $num2 == 3 ]; then
    echo "num2 is 3" 
  else
    echo "not"
  fi;

与或非

  # -a 表示 and  不推荐使用&&, 使用&& 需要进行转义
  if [  $num2 == 2  -a  $num1 == 4    ]; then
     echo "num2 is 2 and num1 is 4"
  fi
  
  # -o 表示or  不推荐使用||
  if [ $num2 == 3 -o $num1 == 2 ];then
     echo "num2 is 3 or num1 is 2"
  else
     echo "num2!=3 and num1!=2"
  fi 
  
  if [ -n $num3 ]; then #判断num3有没有赋值
    echo "nums is null"
  else
    echo "num3 is not null" 
  fi

大于,小于,等于

  # -lt  less than , 表示<
  num=3
  if [ $num -lt 3 ];then
    echo "$num < 3"
  else
    echo "$num >=3 "
  fi
  
  # -le  less or equal , 表示<=
  num=3
  if [ $num -le 3 ];then
    echo "$num <= 3"
  else
    echo "$num >3 "
  fi
  
  
  # -ge  great equal than, 表示>=
  num=3
  if [ $num -ge 3 ];then
    echo "$num >= 3"
  else
    echo "$num <3 "
  fi
  
  # -gt  greater than, 表示>
  num=3
  if [ $num -gt 3 ];then
    echo "$num > 3"
  else
    echo "$num <= 3 "
  fi

文件或目录,文件内容判断

  if [ -f "/etc/hosts" ]; then
    echo "/etc/hosts is a file"
  fi
  
  if [ -f "/etc" ];then
     echo "/etc is a file"  #不成立,/etc/是一个目录
  fi;
  
  if [ ! -f "/etc" ];then   # ! -f 表示判断不是一个文件
     echo "/etc is not a file"  #不成立,/etc/是一个目录
  fi;
  
  if [ -d "/etc" ];then
     echo "/etc is a directory"  
  fi
  
  if [ ! -d "/etc" ];then
     echo "/etc is not a directory"
  fi
  
  #判断a.txt中是否有abc这个字符串
  if grep  "abc" a.txt;then    
     echo "a.txt contain abc"
  else
     echo "a.txt not contain abc"
  fi
  
  #判断a.txt中最后200行,有没有abc这个字段
  if tail -200 a.txt|grep "abc" ; then
     echo "-200 a.txt contain abc"
  else
     echo "-200 a.txt not contain abc"
  fi

for循环

  for var in 1,2,3; do
    echo $var
  done
  
  #打印文件名
  for file in `ls `; do 
    echo $file
  done

while循环

  i=0
  while [ $i != 10 ];do
    echo $i
    i=$(($i + 1))
  done
  
  # -lt  是< 的意思
  i=0
  while [ $i -lt 10 ];do
     echo $i
     i=$(($i+1))
  done

while读取输入,读取文件

  while read line
  do
    if [ $line == "exit" ]; then
      break;
    fi
    echo $line
  
  done
  
  #读取id.txt的内容,并组装url调用,把调用结果追加到result.log 中
  cat id.txt |while read id
  do
     curl  "http://v.juhe.cn/weather/index?key="${id} >> result.log
  done

判断某个文件的最后修改时间与给定时间的大小关系判断

  date1="2016-07-09 14:47:00"
  date2=`stat top.log|tail -1|awk '{print $2}'`   #获取top.log的最后修改时间
  
  t1=`date -d "${date1}" +%s`
  t2=`date -d "${date2}" +%s`
  
  echo $t1   #输出是unixstamp,精确到毫秒
  echo $t2
  
  if [ $t1 -gt $t2 ];then
     echo "${date1} > ${date2} "
  elif [ $t1 -eq $t2 ];then
     echo "${date1} == ${date2}"
  else
     echo "${date1} < ${date2}"
  fi


http://www.itshouce.com.cn/linux/linux-shell.html

未经允许不得转载:Free-Abc智能 » shell代码片段
分享到: 更多 (0)