Linux Shell编程基础摘录

[TOCM]

shell 学习笔记

  1. 开始
    # 第一行通常指定脚本用什么解析器来执行
    #!/bin/bash  或者 #!/bin/sh
    
    chmod -x ./test.sh  #使脚本具有可执行权限
    
  2. 运行方式
    # 直接运行
    ./test.sh
    
    # 文件名作为解释器参数
    
    /bin/bash test.sh
    
    test.sh和./test.sh运行的区别:
    
    test.sh的话 系统会去PATH目录里去找这个命令,肯定是找不到的
    
    ./test.sh 告诉系统 就在当前目录找test.sh
    
  3. 注释

    以#开头

  4. 变量

    # 定义变量(变量名和等号之间不能有空格)
    
    youname="simon"
    
    # 使用变量
    
    $youname
    
    # 删除变量
    
    unset youname
    
    # 只读变量
    
    readonly youname
    
  5. 字符串
    # 单双引号的使用规则 类似PHP
    
    # 双引号中可以使用{}将变量与字符串区分开来
    
    echo "hello  ${youname}hahaha"
    
  6. 拼接字符串
    youname="simon"
    
    echo "hello"$youname"!"
    
    echo "hello " $youname "!"
    
    echo "hello ${youname}!"
    
  7. 字符串长度
    youname="simon"
    
    echo ${#youname} # 输出5
    
  8. 截取字符串
    youname="simon"
    
    echo ${youname:1:4} 输出imon 下标从0开始
    
  9. 查找字符串
    youname="simon"
    
    echo expr index "$youname" i 输出2 下标从1开始
    
  10. 判断字符串是否包含另一字符串
    str='hello world'
    
    word='world'
    
    if [[ str == *word* ]]
    
    then
    
    #包含
    
    else
    
    #不包含
    
    fi
    
  11. 数组
    # 声明 下标从0开始,元素用空格隔开
    
    arrayname=(v1 v2 v3)
    
    arrayname[0]=v1
    
    # 读取
    
    ${arrayname[0]}
    
    # 读取所有元素
    
    ${arrayname[@]}
    
    # 获取元素个数
    
    ${#arrayname[@]}
    
    
  12. 传递参数
    ./test.sh a b c
    
    echo $0  输出当前文件名
    
    echo $1  输出a
    
    echo $2  输出b
    
    echo $3  输出c
    
    echo $# 输出当前传递的参数个数
    
  13. 接收用户输入
    使用read命令接收输入
    
    echo -n "who are you ?"
    
    read name
    
    echo $name;
    
    
  14. 基本运算
    bash不支持数学运算,需要借助awk及expr命令实现
    
    echo `expr 2 + 2`
    
    条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
    
  15. 逻辑判断
    ---------- if ----------
    
    if [ a == b ]
    
    then
    
    #todo
    
    fi
    
    ---------- if else ----------
    
    if [ $a -gt 0]
    
    then
    
    echo '$a > 0'
    
    else
    
    echo '$a < 0'
    
    fi
    
    ---------- if elseif ----------
    
    if [ $a -gt 0 ]
    
    then
    
    echo '$a > 0'
    
    elif
    
    then
    
    #todo
    
    else
    
    #todo
    
    fi
    
    
  16. 是否是文件夹
    if [ -d $file ]
    
  17. 是否是文件
    if [ -f $file ]
  18. 检测字符串长度是否为0
    if [ -z $str ]
    
  19. 检测字符串长度是否不为0
    if [ -n $str ]
    
  20. 检测字符串是否不为空
    if [ $str ]
    

发表评论