美文网首页
Vim基本语法,函数

Vim基本语法,函数

作者: 潇洒人生_cca2 | 来源:发表于2020-04-05 10:29 被阅读0次

    ● 模式切换
    插入模式
    1)i 进入插入模式,光标前
    2)a 进入插入模式,光标后
    3)I 行首
    4)A 行末

    命令模式:ESC
    末行模式:shift + ;
    1)w 存盘
    2)wq 存盘退出
    3)q! 不存盘退出

    删除行:dd
    翻页:ctrl + f(上一页) ctrl + b(下一页)
    复制行:yy
    粘贴:p
    撤销上一步的操作:u
    恢复上一步被撤销的操作:Ctrl+r

    ● 文本搜索
    ?pattern Enter
    n 朝同一方向搜索
    N 朝相反方向搜索

    输入,输出,重定向

    #!/bin/bash
    NDK=10
    text="i love shell"
    
    #命令的执行结果的输出作为变量的值
    text1=`date`
    text2=$(who)
    
    echo $NDK
    echo $text
    echo "$text very much"
    echo "\$NDK"
    echo $text1
    echo $text2
    
    #输出重定向
    ls -al > test2
    
    #输入重定向
    wc < test3
    
    
    a=10
    b=20
    #expr命令
    c=$(expr $b / $a)
    #方括号
    d=$[$a * 2]
    #bc 浮点数计算
    #| 管道,一个命令的输出作为另外一个命令的输入
    #scale是自带的内建变量(保留四位)
    e=$(echo "scale=4; $a / 3" | bc)#前面的输出作为bc的输入
    #内联输入重定向,a*b/3
    f=$(bc << EOF
    scale=4
    a1 = ($a * $b)
    a1 / 3
    EOF
    )
    echo "c:$c"
    echo "d:$d"
    echo "e:$e"
    echo "f:$f"
    
    var1=20
    var2=3.1333
    var3=$(echo "scale=4; $var1 * $var2" | bc)
    echo result is $var3
    
    #退出状态码
    exit 5
    
    #!/bin/bash
    
    ##标准输入输出
    #0 STDIN 
    #1 STDOUT 标准输出
    #2 STDERR 标准错误
    
    #永久重定向,文件相同的话会覆盖
    exec 1>test7
    exec 2>test8
    
    #自定义输出
    exec 7>test9
    
    echo "cc zz" >&7
    echo "cc yy"
    
    ls -a ./ff
    

    命令执行退出的状态:

    echo $? 查看退出状态码
    0 成功
    127 没有找到命令
    1 未知错误
    126 命令不可执行

    #!/bin/bash
    echo "my shell exit"
    exit 5
    

    if

    只有if命令的退出状态码为0,才会执行then部分
    if 命令
    then
    命令
    else
    命令
    fi

    #!/bin/bash
    testuser=lady
    #grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来
    #grep搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。
    if grep $testuser /etc/passwd 
    then
        echo "ok"
        ls -a /home/$testuser/
    #   
    elif ls -d /home/$testuser
    then
        echo "用户不存在,主目录仍然存在"
    #   
    else
        ##嵌套if
        #if 
        #then
        echo "$testuser not exist"
    
    
    #test命令,如果条件成立,test命令已状态为0退出,if条件成立
    if test $var
    then
        echo "test条件成立"
    else
        echo "test条件不成立"
    fi  
    #
    

    test数值比较
    -gt
    -eq 等于
    -le
    -ne 不等于

    #!/bin/bash
    a=10
    b=5
    #test命令简单形式
    if [ $a -gt $b ]#一定要加上左右的空格
    then
        echo "$a greater than $b"
    else
        echo "$a smaller than $b"
    fi
    

    test字符串比较
    str1 == str2
    str1 != str2
    str1 < str2
    -n str1 长度是否非0
    -z str1 长度是否为0

    #!/bin/bash
    str1=""
    if [ str1 = "" ]                                                            
    then
        echo "有内容"
    else
        echo "没内容"
    fi
    

    文件比较
    -d 检查是否存在,并且是一个目录
    -e 检查file是否存在
    -f 检查是否存在,并且是一个文件
    -r 检查是否存在,并且可读 -w、-x
    file1 -nt file2 file1比file2新
    file1 -ot file2 file1比file2旧

    #!/bin/bash
    mydir=/usr/jason
    #-d检查目录是否存在
    if [ -d $mydir ]
    then
        echo "$mydir exist"
        cd $mydir
        ls
    else
        echo "mydir not exist"
    fi
    
    #!/bin/bash
    #多个条件 []
    mydir=/usr/jason/shell
    #if (( a++ > 90 ))#任意数学赋值或者比较表达式
    if [ -d $HOME ] && [ -w $mydir ]
    then
        cd $mydir
        touch test5
    else
        echo "no"
    fi  
    

    case

    case 变量 in
    pattern1) 命令;;
    pattern2) 命令;;
    *) 默认命令;;
    esac

    #!/bin/bash
    testuser=rose
    
    case $testuser in
    rose)
        echo "hi,$testuser";;
    ricky)
        echo "hello, ricky";;
    *)
        echo "defaults";;
    esac
    

    for

    for var in list
    do
    命令
    done

    #!/bin/bash
    list="Mother\'s Father Brother"
    list2="windows--linux--macos"
    #IFS字段分隔符
    IFS=$--
    for item in $list2
    do
        echo $item
    done
    

    while命令

    while test command
    do
    命令
    done

    #!/bin/bash
    a=10
    while [ $a -gt 0 ]
    do
        echo "num:$a"
        #赋值不用使用$符号
        a=$[ $a - 1 ]
        if [ $a -eq 5 ]
        then
            echo "break"
            break
        fi  
    done
    

    函数

    函数传参

    #!/bin/bash
    filename=$(basename $0)
    #内建变量
    echo "参数的总数:$#"
    echo filename
    echo $1
    echo $2
    echo $3
    
    #使用$@遍历所有参数
    #getopt
    echo "遍历"
    for param in "$@"
    do
        echo "param:$param"
    done
    
    #!/bin/bash
    
    #函数的传参,返回值
    function myfun
    {
        echo $[ $1 + $2 ]
    }
    
    value=$(myfun 10 90)
    echo "value:$value"
    
    #!/bin/bash
    #引入./17.sh
    #source ./17.sh
    #.source快捷别名
    . ./17.sh
    function myfun()
    {
        echo $value
    }
    value=20
    myfun
    echo "add value:$(add 10 30)"
    

    相关文章

      网友评论

          本文标题:Vim基本语法,函数

          本文链接:https://www.haomeiwen.com/subject/iudadctx.html