• 杂点-shell


    • 使用while循环读取文件
        cat file.txt |while read line
        do
        	echo $line
        done
      
        或者:
      
        while read line
        do
        	echo $line
        done < file.txt
    • zzx@zzx120:~/zzx1/test/a$ echo -n 1;echo -n 2
    • 12zzx@zzx120:~/zzx1/test/a$ echo -n 1;echo ;echo -n 2    #   echo加在 echo -n  中间   可以换行 

    • 1
    • 2zzx@zzx120:~/zzx1/test/a$
    • zzx@zzx120:~/zzx1/test$ seq 1 2 7  #打印奇数
      1
      3
      5
      7
    • zzx@zzx120:~/zzx1$ for i in `seq 1 3` 'a' 'x' ;do echo $i; done     #循环,包括1,2,3,X,Y
      1
      2
      3
      a
      x
      1. 算式的结果,例如计算4+3 就用 $[4+3]   # 加减乘除都行
    • zzx@zzx120:~/zzx1$ a=123/123 
      zzx@zzx120:~/zzx1$ echo ${#a}  #  ${#var} 得到var的字节数

      7

    • bash 的组数(array)处理方法。 

      一般而言,

      A="a b c def"

       这样的变量只是将

       $A 替换为一个单一的字符串,

      但是改为

       A=(a b c def) ,则是将

       $A 定义为组数...

      bash

       的组数替换方法可参考如下方法:

      ${A[@]} 或       ${A[*]} 可得到             # for i in ${A[*]}

       a b c def (全部组数) 

      ${A[0]}

       可得到

       a (第一个组数),${A[1]}

       则为第二个组数... 

      ${#A[@]} 或    ${#A[*]} 可得到    4 (全部组数数量) 

      ${#A[0]}

       可得到

       1 (即第一个组数(a)的长度),${#A[3]}

       可得到

       3 (第四个组数(def)的长度)

       A[3]=xyz

       则是将第四个组数重新定义为

       xyz ...

    • #!/bin/bash
      a=(

      W
      E
      )
      echo sum=${#a[*]}
      for i in ${a[*]};do
      echo $i;
      done
      echo first:${a[0]}
      echo second:${a[1]}
      zzx@zzx120:~/zzx1$ ./forarr.sh   
      sum=3
      Q
      W
      E
      first:Q
      second:W

    • 编辑一个文件   死机 重新打开一个ssh窗口编辑这个文件 可能提示同时编辑的问题

     提示E325: ATTENTION错误    文件只读无法编辑

     提示   .file.swp      当前文件夹下找到这个文件删除        rm -rf .file.swp 即可解决

    .

     

    czzx@zzx103:~$ echo -n "a   ";echo -n b ;echo " "; echo -n c    #echo -n  不换行输出     echo “ ”  实现换行输出(echo -n 时  echo " " 空行就是换行)
    a   b
    c

    列出脚本所在文件夹位置

    #!/bin/bash
    base_dir=$(cd "$(dirname "$0")";pwd)
    echo $base_dir

    linux bash中too many arguments问题的解决方法

    给命令执行部分加上双引号即可:

    代码如下:

    if test -z "`cat filename`"     
    [ "`ifconfig |awk '{print $5}'|grep c8`" = "c8:60:00:79:a1:d3" ] && echo ok || echo error
    [[ `ifconfig |awk '{print $5}'|grep c8` = "c8:60:00:79:a1:d3" ]] && echo ok || echo error

    今天偶尔因解决一个小问题,遇到了一奇怪的问题“[ ]”和"[[  ]] "的不一样的效果,总结如下

    显示一下code:     if [ -z ` lsof -i:22 ` ]    //这种写法会报too many arguments,改成[[ -z ` lsof -i:22 ` ]]
                                then
                                     echo "the port is not running"
                                 else
                                     echo "the port is running"
                                 fi

    运行这个简单shell脚本时,总是报too many arguments,最后才查到和版本的通用性是有关系的,更简单的说是,"[[  ]]"比"[ ]"具有更好的通用性,所以,为了避免这种问题的发生,直接将"[  ]"替换成"[[  ]]"就可以了。而且”[[ ]]“比“[ ]”比它有更强的容错性,也就是在"[ ]"可能报的错在"[[ ]]结构中可能不报错,比如&&,||等这样的逻辑判断,因不是本篇重点,一带而过了。

  • 相关阅读:
    POJ_3104_Drying_(二分,最小化最大值)
    POJ_3273_Monthly_Expense_(二分,最小化最大值)
    POJ_3185_The_Water_Bowls_(反转)
    POJ_2566_Bound_Found_(尺取法+前缀和)
    POJ_3061_Subsequence_(尺取法)
    POJ_3258_River_Hopscotch_[NOIP2015]_(二分,最大化最小值)
    POJ_1064_Cable_master_(二分,假定一个解并判断是否可行)
    POJ_2456_Agressive_cows_(二分,最大化最小值)
    背包九讲之三(多重背包)
    背包九讲之二(完全背包)
  • 原文地址:https://www.cnblogs.com/hanxing/p/4078602.html
Copyright © 2020-2023  润新知