zoukankan      html  css  js  c++  java
  • linux shell脚本-1

    1.1 终端打印——echo、printf

    1、 echo 双引号、单引号:注意加转义字符;无引号:注意分号

      printf "%-5s %-10s %-4s " No Name Mark

      echo -e "包含转义序列"

    echo -e "e[1;31m This is red text e[0m"
    

      效果:

      其他颜色:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=35,青色=36,白色=37

      echo -n 忽略末尾的换行符(echo默认会将一个换行符追加到输出文本的尾部)


    1.2 变量和环境变量

      1、查看

      env

      cat /proc/$PID/environ

      2、可以在双引号中引用变量值($value) 

      3、export设置环境变量

      4、获得字符串长度:length=${#var}

      5、SHELL表示用的是哪种shell,UID用来判断是否是超级用户(0是root)


     1.3 通过shell进行数学计算

      1、let命令可以直接执行基本的算术操作,当使用let时,变量之前不需要再加$

    let result=no1+no2
    let no1++
    let no2--

      2、其他方法

      []  (())  expr

    result=$[no1+no2]
    result=$[$no1+5]
    result=$((no1+50))
    result=`expr 3+4`
    result=$(expr $no1+5)

      以上方法只能用于整数运算,而不支持浮点数(老实说,对着几个符号没弄懂)

      3、bc

      


     1.4 文件描述符和重定向

      1、tee命令可以接受到来自stdin的数据。它将stdout的一份副本写入文件out.txt,同时将另一份副本作为后续命令的stdin;cat -n将从stdin中接受到的每一行数据前加上行号并写入stdout:

    [pocean@node235 memtrace]$ cat 1.txt | tee out.txt | cat -n
         1    a
         2    ab
         3    abc
         4    abcd
         5    abcde
    [pocean@node235 memtrace]$ cat out.txt 
    a
    ab
    abc
    abcd
    abcde

      另外tee命令会将文件覆盖,但它提供了一个-a选项,可以用于追加内容。

      

     


    1.5 数组和关联数组

    array_var=(1 2 3 4 5)
    
    或者:
    array_var[1]="test1"
    array_var[2]="test2"
    array_var[3]="test3"
    array_var[4]="test4"
    
    echo ${array_var[0]}
    echo ${array_var[*]}
    echo ${array_var[@]}
    [pocean@node235 ~]$ declare -A ass_array
    [pocean@node235 ~]$ ass_array=([apple]='100 dollars' [orange]='150 dollars')
    [pocean@node235 ~]$ echo "Apple costs ${ass_array[apple]}"
    Apple costs 100 dollars
    [pocean@node235 ~]$ echo ${ass_array[*]}
    150 dollars 100 dollars
    [pocean@node235 ~]$ echo ${!ass_array[*]}
    orange apple

    1.6 别名

      通过cmd可以将所要运行的命令进行转义,从而忽略当前定义过的所有别名。

    1.7 获取终端信息——tput

      比如行数、列数、光标位置、遮盖密码字段等,详细使用自行google

    1.8 调试

      -xv

    1.9 函数和参数

      $n 第n个参数,$@ 被扩展成$1 $2 $3

      $? 上个命令的返回值(0表示成功,非0表示失败)

    1.10 利用子shell生成一个独立的进程

      子shell本身就是独立的进程。可以使用()操作符来定义一个自shell:

    pwd;
    (cd /bin;ls);
    pwd;


    1.11 以不按回车键的方式读取字符

    [pocean@node235 ~]$ read -n 3 var #输入n-1个数
    1 2[pocean@node235 ~]$ echo $var
    1 2
    [pocean@node235 ~]$ read -s var #密码输入
    [pocean@node235 ~]$ echo $var
    123456
    [pocean@node235 ~]$ read -p "Enter input:" var #提示输入
    Enter input:123789
    [pocean@node235 ~]$ echo $var
    123789
    [pocean@node235 ~]$ read -t 3 var #3秒内输入
    3[pocean@node235 ~]$ read -d ":" var #到:符号时停止输入
    hello:[pocean@node235 ~]$ echo $var
    hello

    1.12 IFS 内部定界符

    data="name,sex,rollno,location"
    oldIFS=$IFS
    IFS=,
    for item in $data
    do
        echo Item: $item
    done
    
    IFS=$oldIFS

    1.12 循环

    for var in list;
    do
    commands
    done
    list can be a string, or a sequence
    while condition
    do
    commands
    done

    1.13 比较与测试

      if语句

    if condition;
    then
    commands;
    fi
    
    
    if condition;
    then
    commands;
    elif condition;
    then
    commands
    else
    commands
    fi

      算术比较

      条件通常被放置在封闭的中括号内。一定要注意[或]与操作数之间有一个空格。如果忘记了这个空格,脚本就会出错。

      [ $var -eq 0 ]  [ -f/x/e/c/b/w/r/L file ]

      一些操作符:

      -ne:等于  -gt:大于  -lt:小于  -ge:大于或等于  -le:小于或等于

      -a:逻辑与  -o:逻辑或

      字符串比较最好用双中括号:

      [[ $str1=$str2 ]]

  • 相关阅读:
    Ubuntu 装JDK
    U盘文件夹被病毒隐藏,且不能取消解决办法
    wireshark: there are no interfaces on which a capture can be done
    [转]Ubuntu 常用快捷键10个
    恢复被win7覆盖的Ubuntu Grub
    U盘安装Win7 64位
    荣耀3X畅玩版狙击红米note!
    Secret and Whisper
    360 chrome不能登录Google账户
    周鸿祎仍想做手机
  • 原文地址:https://www.cnblogs.com/pocean/p/3599409.html
Copyright © 2011-2022 走看看