shell语法

基本语法列表

#linux组成:内核+工具

#linux启动:
    1. getty:提示登录名和密码,输入之后调用login
    2. login:login验证用户名和密码,然后调用shell
    3. shell:用户与系统的交互接口

#文件的分类:普通文件、目录、特殊文件。
    1. 普通文件的:ls cat cp mv rm
    2. 目录:ls mkdir rmdir cp mv rm

#文件的属性:权限、所有者、组
    1. 权限:chmod
    2. 所有者、组:chown chgrp

#进程:前台,后台
    1. & fg bg nohup(终端断开同样执行)
    2. jobs ps top kill
    3. exec
    
#变量:普通变量、数组变量
    1. $
    2. 数组变量赋值:ksh:set -A name value1 value2 value3,bash: name(value1 value2 value3)
    3. 数组的访问:${name[index]},${name[*]},${name[*]}
    4. readonly
    5. set unset
#变量:局部变量、环境变量、Shell变量
    1. shell变量:PWD UID SHLVL REPLY RANDOM SECONDS IFS PATH HOME
    2. export

#替换:文件名替换、变量替换
    1. 文件名的替换:* ? [characters]
    2. 变量替换
        ${parameter:-word} 若parameter为空或未设置,使用word代替parameter进行替换,parameter的值不变
        ${parameter:+word} 若parameter设置了,使用word代替parameter进行替换,parameter的值不变
        ${parameter:=word} 若parameter为空或未设置,则parameter设置为word
        ${parameter:?message} 若parameter为空或未设置,这message作为标准错误打印出来
    3. 命令替换:`command`
    4. 算术替换:$((express))

#参数:
    1. $0:程序名字
    2. $n:第n个参数
    3. $#:参数数量
    4. $*:所有的参数
    5. $@:全部
    6. $?7. $$:
    8. $!9. shift
    
#输入
    1. 向屏幕:echo printf
    2. 重定向输出:> >> |
    3. 重定向输入:<
    4. read
    
#文本过滤
    1. head tail grep sort uniq tr
    2. sed awk

#常用工具
    eval
    :
    type
    sleep
    find
    xargs
    expr
    
    
#控制流
    1. if
        if list1
        then
            list2
        elif list3
        then
            list4
        else
            list5
        fi
    2. case
        case word in
            pattern1)
                list1
                ;;
            pattern2)
                list2
                ;;
       esac
    3. while
        while command
        do
            list
        done
    4. until
        until command
        do
            list
        done
    5. for
        for name in value1 value2 ... valueN
        do
            list
        done
    6. select
        select name in value1 value2 ... valueN
        do
            list
        done
    7. break continue
    
#判断
    1. 判断 test [ ]
    2. 文件判断
        -f file:文件是否存在
        -d path:路径是否存在
        -r file:是否可读
        -w file:是否可写
        -x file:是否可执行
    3. 字符串判断
        -z string:字符长度为0
        -n string:字符长度不为0
        string1 = string2:相等
        string1 != string2:不相等
    4. 数字比较
        -eq:=
        -ne:<>
        -lt:<
        -gt:>
        -le:<=
        -ge:>=
    5. 逻辑运算
       !expr:非
       expr1 -a expr2:且
       expr1 -o expr2:或
       &&
       ||
 
#函数
    1. 定义
        name( ) { list ; }
    
    
#tips
    #读文件
    while read Line
    do
        echo $Line
    done < file
    #find
        find * -name '*.sh'
    #输入一长段提示
        echo 'one
        two'
        echo 'one
two'
        cat <<EOF
        NICE DAY IN THE WORLD.
        THIS IS A VERY NICE DAY.
EOF
    #最后一个参数的求法
    eval last=${$#}
        
        
原文地址:https://www.cnblogs.com/zhizhou/p/3639454.html