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

  • 相关阅读:
    第六周作业:《人月神话》对我做项目实践的启示(一)
    第五周作业:网站的初步设计
    关于做团队项目时需求分析工作中所学的一部分知识
    软件工程学生的编程能力与编程语言是中文或英文有关系吗?
    面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。
    当下大部分互联网创业公司为什么都愿意采用增量模型来做开发
    1+X Web前端开发(中级)理论考试样题(附答案)
    1+X Web前端开发(初级)理论考试样题(附答案)
    vi 和vim 的区别
    Linux查看日志三种命令
  • 原文地址:https://www.cnblogs.com/hanxing/p/4078602.html
Copyright © 2020-2023  润新知