vim 编程环境配置:
.vimrc 文件配置如下:(.vimrc文件放到家目录下:/root ;然后退出 xshell 再登陆进来xshell)
set nocompatible set history=100 filetype on filetype plugin on filetype indent on set autoread set mouse=c syntax enable set cursorline hi cursorline guibg=#00ff00 hi CursorColumn guibg=#00ff00 set foldenable set foldmethod=manual set foldcolumn=0 setlocal foldlevel=3 set foldclose=all nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> set expandtab set tabstop=4 set shiftwidth=4 set softtabstop=4 set smarttab set ai set si set wrap set sw=4 set wildmenu set ruler set cmdheight=1 set lz set backspace=eol,start,indent set whichwrap+=<,>,h,l set magic set noerrorbells set novisualbell set showmatch set mat=4 set hlsearch set ignorecase set encoding=utf-8 set fileencodings=utf-8 set termencoding=utf-8 set smartindent set cin set showmatch set guioptions-=T set guioptions-=m set vb t_vb= set laststatus=4 set pastetoggle=<F9> set background=dark highlight Search ctermbg=black ctermfg=white guifg=white guibg=black autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()" func SetTitle() if expand("%:e") == 'sh' call setline(1, "#!/bin/bash") call setline(2, "##############################################################") call setline(3, "# File Name: ".expand("%")) call setline(4, "# Version: V1.0") call setline(5, "# Author: neo") # 作者 call setline(6, "# Organization: anonymous") # 公司名 call setline(7, "# Created Time : ".strftime("%F %T")) call setline(8, "# Description:") call setline(9, "##############################################################") endif endfunc
if结构条件句:
# 1、单分支if条件句语法: if 条件表达式 then 指令 fi # 2、双分支if条件句语法: if 条件表达式 then 指令 else 指令 fi # 3、多分支if条件句语法: if 条件表达式1 then 指令1 elif 条件表达式2 then 指令2 else 指令3 fi # if条件单分支与条件测试编程对比实践: # 例1:如果不存在 /backup 目录就创建 #!/bin/bash path="/backup" [ -d $path ] || mkdir /backup -p if [ -d $path ] then : # shell 中 , : 表示什么都不做 else mkdir $path -p fi [ ! -d $path ] && mkdir $path -p if [ ! -d $path ] then mkdir $path -p fi # 例2:开发shell脚本判断系统剩余内存的大小,如果低于 100MB 就提示内存不足,否则提示内存充足 # 分析: 1)提取系统内存 2) if进行判断 # 获取内存的命令: free -m [root@m01 ~]# free -m total used free shared buffers cached Mem: 474 214 259 0 78 33 -/+ buffers/cache: 102 371 Swap: 767 0 767 [root@m01 ~]# # linux默认把剩余的内存都当作 buffers/cache 对待,所以上面的 371 就表示剩余的内存(单位是 MB) # 取出 剩余内存371的方法如下: [root@m01 ~]# free -m|awk 'NR==3{print $4}' 371 [root@m01 ~]# free -m|awk 'NR==3{print $NF}' # $NF 表示的最后一个Field(列),即输出最后一个字段的内容 371 # 例题2的示例: [root@m01 practice]# cat get_memory_size.sh #!/bin/bash ############################################################## # File Name: get_memory_size.sh # Version: V1.0 # Author: neo # Organization: anonymous # Created Time : 2019-06-27 23:38:55 # Description: ############################################################## mem=`free -m|awk 'NR==3{print $NF}'` if [ $mem -lt 100 ] then echo "memory insufficient" else echo "memory is sufficient" fi [root@m01 practice]# bash get_memory_size.sh memory is sufficient # 注意: read 读入没办法用 $#
函数:
函数的概念与作用:
函数的作用就是将程序里多次被调用的相同代码组合起来(函数体),并为其取个名字(即函数名),其它所有想重复调用这部分代码的地方都只 需要调用这个名字就可以了。当需要修改这部分重复代码时,也只需要改变函数体内的一部分代码即可实现所有调用的修改,也可以把函数独立写 到文件里,当需要调用函数时,再加载进来使用。 # shell函数的优势: 1. 把相同的程序段定义成函数,可以减少整个程序的代码量,提升开发效率 2. 增加程序的可读、易读性,提升管理效率 3. 可以实现程序功能模块化,使得程序具备通用性(可移植性) # 对于shell来说,Linux系统里面的近2000个命令都可以说是shell的函数
函数的语法:
# 语法1: function 函数名(){ 指令集 return 返回值 } # 语法2: function 函数名 { # 这种定义方式时, 函数名 和 { 之间必须要有一个空格 指令集 return 返回值 } # 语法3:(推荐) 函数名(){ 指令集 return 返回值 }
shell函数的执行:
带参数的函数的执行:
注意: 上图中的第3条表示,$0 依然是脚本的名字,而不是函数所在脚本的名字