• shell 其他杂项知识点笔记


    // 其他杂项知识点  
    
    对于普通用户,Base shell 默认的提示符是美元符号$;对于超级用户(root 用户),Bash Shell 默认的提示符是井号#
    
    -------
    
    #!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell;后面的/bin/bash就是指明了解释器的具体位置    
    
    -------
    
    read 命令用来从标准输入读取用户输入的数据   
    
    -------
    
    点号用于执行某个脚本,甚至脚本没有可执行权限也可以运行。有时候在测试运行某个脚本时可能并不想为此修改脚本权限,这时候就可以使用.来运行脚本,非常方便。    
    
    -------
    
    sh-3.2# echo $SHELL     // 查看系统使用的shell为bash       
    /bin/sh
    
    sh-3.2# bash --version  // 查看bash版本 等同 echo $BASH_VERSION    
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)    
    Copyright (C) 2007 Free Software Foundation, Inc. 
    
    --------
    
    字符串截取操作  
    
    ${string: start :length}   // 从0开始 截取的长度(可以省略,省略长度代表截取到末尾)      
    
    hello='Hello World!'
    echo ${hello:6:5}  // 从6开始截取5个字符    
    echo ${hello:6} // 截取到末尾    
    
    hello='Hello World!' // 从指定字符开始截取到末尾   
    echo ${hello#*o} // #代表指定截取 *通配左边所有字符   
    
    sh-3.2# echo ${hello#r}
    Hello World!
    sh-3.2# echo ${hello#Hello Wor} // 不使用通配符也行  
    
    
    # 截取右边字符,忽略左边   
    sh-3.2# echo ${hello#*o}  // 默认从第一个指定字符开始
    World!
    sh-3.2# echo ${hello##*o} // 从最后一个指定字符开始匹配   
    rld!
    
    % 截取左边,忽略右边 (跟#相反)          
    sh-3.2# echo ${hello%o*}      
    Hello W    
    sh-3.2# echo ${hello%%o*}        
    Hell    
    
      
    --------    
     
    数组合并   
    
    sh-3.2# arr1=(1 2 3)   
    sh-3.2# arr2=(4 5 6)    
    sh-3.2# arr3=(${arr1[@]} ${arr2[@]})    
    sh-3.2# echo ${arr3[@]}    
    1 2 3 4 5 6       
    
    -------- 
    
    /etc/bashrc 文件  
    alias hello='ls -l' // 添加alias别名
    source 执行一下  
    
    -------- 
    
    `` 反引号和 $() 差不多,字符串将解释成shell命令来执行  
    z:~ k$ for i in `ls`; do    
    > echo $i    
    > done    
    Applications    
    Applications  
    (Parallels)  
    Desktop   
    z:~ k$   
    
    --------  
    ((表达式))  多个表达式之间以逗号,分隔, 
        
    sh-3.2# echo $((a=2,b=3)) // $获取 (( )) 命令的结果    
    3    //  以最后一个表达式的值作为整个 (( )) 命令的执行结果  
    
    
    // 使用变量时不用加$前缀,(( )) 会自动解析变量名
    sh-3.2# a=2    
    sh-3.2# b=3    
    sh-3.2# echo $((a))    
    2     
    
    
    let 也是表达式求值 和(())一样,只是当是多个表达式时,是以空格为分割     
    
    sh-3.2# let a=1 b=2   
    sh-3.2# echo $a $b    
    1 2     
    
    $[] 跟let (()) 也差不多    
    
    sh-3.2# echo $[1+2]     
    3  
    
     -------- 
     
     expr 整数计算    
     
     sh-3.2# expr 1 + 2     
    3
    sh-3.2# expr 1 * 3   
    3
    sh-3.2# a=1    
    sh-3.2# expr $a    
    1    
    sh-3.2# expr ( 1 * 3 ) + 2  // 括号也要转义  
    5
    
     -------- 
     for 循环    
    for((exp1; exp2; exp3))
    do
        xxx  
    done
    
     -------- 
     退出状态   
     
    每一条 Shell 命令,当它退出(运行结束)时,都会返回一个整数值给调用(使用)它的程序,即命令的退出状态    
    
    if 语句的判断条件,从本质上讲,判断的就是命令的退出状态
      
    按照惯例来说,退出状态为 0 表示“成功”;也就是说,程序执行完成并且没有遇到任何问题。除 0 以外的其它任何退出状态都为“失败” 
    
    
    sh-3.2# echo $(( 1 * 2 ))     
    2     
    sh-3.2# echo $?     
    0     // 0成功   
    sh-3.2# abcdefg   
    sh: abcdefg: command not found   
    sh-3.2# echo $?   
    127  // 失败    
    
     -------- 
    
    select in 循环,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能    
    
    
    sh-3.2# select name in "aa" "bb" "cc" "dd"      
    > do     
    > echo $name    
    > done    
    1) aa     
    2) bb     
    3) cc     
    4) dd     
    #? 1     
    aa     
    #? 2    
    bb     
    #? 3     
    cc       
    #? 4  
    

      

  • 相关阅读:
    python自定义ORM并操作数据库
    python 元类理解
    Python中type()详解:动态创建类
    Centos7安装教程
    数据库建模:学生信息系统搭建实验
    数据库索引、视图与触发器
    用python批量插入数据到数据库中
    制作一个简单的部门员工知识分享的python抽取脚本
    【Mybatis】XML配置实现增删改查
    NIO,AIO,BIO
  • 原文地址:https://www.cnblogs.com/leyi/p/10638670.html
Copyright © 2020-2023  润新知