vim操作和shell语句

vim操作

  • a:光标右侧插入字符
  • A:行尾插入字符
  • i:光标左侧插入字符
  • I:行首插入字符
  • o:下方新增一行插入字符
  • O:上方新增一行插入字符
  • 0:移至行首
  • $:移至行尾
  • w:下一个单词
  • x:删除一个字符(n+x:删除n个字符)
  • dd:删除一行(n+dd:删除n行)
  • y:复制光标字符
  • yw:复制光标到行尾字符
  • yy:复制一行(n+yy:复制n行)
  • p:粘贴
  • u:撤销一步
  • /+内容:光标位置向下查找内容
  • ?+内容:光标位置向上查找内容
  • n:下一个查找结果
  • set nu:显示行号

Shell编程

Shell基本结构

shell脚本头部以“#!“开头指定shell脚本的运行环境,一般为#!/bin/bash

Shell调用外部脚本

在Shell脚本中可以调用其他已经写好的Shell脚本,有两种调用方法

  • . 脚本文件名
  • source 脚本文件名
变量操作
  • 变量定义:变量名=值
  • 变量访问:$变量名
  • 删除变量:unset 变量名
  • 添加环境变量:export 变量名=值(Shell脚本结束,环境变量消失,需要永久生效编辑/etc/profile)
内部变量
  • $0:当前脚本文件名字
  • $n:传递给脚本的第n个参数
  • $#:传递的参数个数
  • $*:传递的全部参数
  • $$:当前Shell脚本的进程ID
输出命令
  • echo:简单的标准输出

    mouth=4
    echo "2015-${mouth}-10"
    
  • printf:格式化输出

    printf "%d %s\n" 100 "abc"
    
变量的读取输入
read -p "请输入两个数字" v1 v2
变量替换

变量替换是指,根据变量的一些状态来改变它的值

  • ${var:-word}:如果变量var为空或已删除,则返回word,不修改var
  • ${var:=word}:如果变量var为空或已删除,则返回word,并将var设置为word
  • ${var:?message}:如果变量var为空或已删除,则将消息message发送到标准错误输出
  • ${var:+word}:如果变量var被定义,则返回word,不改变var的值
数组的使用

数组的定义方式

  • 数组名=(值1 值2 ... 值n)
  • 数组名[n]=值n

数组的操作

  • 读取数组:${数组名[下标]}
  • 读取元素个数:${#数组名[@]}
  • 读取单个元素长度:${#数组名[n]}
表达式
  • 算术表达式

    • val=$[5+3]
    • let val=$n+$m
  • 逻辑表达式:[ 逻辑表达式 ],只需要一个中括号空格隔开,返回true,false

  • 整数关系运算符

    • -eq:相等
    • -ne:不等于
    • -gt:大于
    • -lt:小于
    • -ge:大于等于
    • -le:小于等于
  • 字符串检测运算符

    • -z:检测是否长度为0,为0返回true

      a="abc"
      if [ -z $a ]
      then
      	echo "长度为0"
      else
      	echo "长度不为0"
      fi
      
    • -n:同样检测长度是否为0,只是如果为0返回false

    • 不加运算符,直接放字符串,判断的是字符串是否为空,不为空返回true

  • 与或运算

    • 与:表达式 -a 表达式
    • 或:表达式 -o 表达式
条件语句
  • if语句

    if [ 表达式 ] … then … elif [ 表达式 ] … then … else … fi

    a=1
    b=2
    if [ $a == $b ]
    then
    	echo "a等于b"
    elif [ $a > $b ]
    then
    	echo "a大于b"
    else
    	echo "a小于等于b"
    fi
    
  • case语句

    case 值 in

    模式1)

    语句1

    ;;

    模式2)

    语句2

    ;;

    模式n)

    语句n

    ;;

    *) #这个表示任意模式,类似default

    语句*

    esac

    case $USER in
    teacher)
    	echo "欢迎老师"
    ;;
    stu1 | stu2)
    	echo "欢迎同学"
    ;;
    root)
    	echo "欢迎管理员"
    ;;
    *)
    	echo "欢迎$USER"
    esac
    
循环结构
  • while [ 表达式 ] do … done

    num=0
    while [ $num -lt 100 ]
    do
      num=$[$num+1]
      echo "num=$num"
    done
    
  • until [ 表达式 ] do … done

    num=0
    until [ $num -ge 100 ]
    do
      num=$[$num+1]
      echo "num=$num"
    done
    
  • for 变量 in 列表 do … done

    for val in 1 2 3 4 5
    do
      echo $val
    done
    
  • break [n]:跳出n层循环,默认是1

  • continue [n]:跳出n层循环,默认是1

  • exit [n]:结束Shell脚本,退出值为n,默认为最后一个指令执行状态

函数

[function] 函数名()

{

命令序列

[return 返回值]

}

[]包含的内容表示可缺省

调用:

  • 直接函数名 参数1 参数2 … 参数n,内部调用参数时,用$n来表示
  • 获取返回值:先调用函数,用#?接收
a=2
b=3
function addNum(){
  printf "%d %d" $1 $2
  local val=$[$1+$2]
  return $val
}

addNum $a $b

val=$?

echo "$val"

{

命令序列

[return 返回值]

}

[]包含的内容表示可缺省

调用:

  • 直接函数名 参数1 参数2 … 参数n,内部调用参数时,用$n来表示
  • 获取返回值:先调用函数,用#?接收
a=2
b=3
function addNum(){
  printf "%d %d" $1 $2
  local val=$[$1+$2]
  return $val
}

addNum $a $b

val=$?

echo "$val"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值