Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Shell编程浅析

1.Shell中的特殊字符

#注释
;命令分割符,可以将多个语句放在一行执行
‘’(单引号)强引用,在单引号中无法引用变量
" "(双引号)类似于’’,但支持变量替换
` `(反引号.为tab键上方按键)用于引用命令的执行结果
 

2.变量

命名规则:以字母开头,可以使用数字字母变量定义:declare varName变量赋值:varName=值变量值引用: $varName导出变量: export varName[=value]撤销变量: unset varName特殊变量:$?:返回上一条命令的状态返回值$1,$2...:位置变量$#:脚本传入的所有参数个数$*,$@:返回脚本传入的所有参数

3.条件测试

使用格式:test EXPR[ EXPR ][[ EXPR ]] 
文件测试字符测试整数测试
-a|-e FILE:是否存在-S FILE:套接字文件> :大于-gt:大于
-f FILE:普通文件-p FILE:命名管道文件<:小于-ge:大于等于
-d FILE:目录-s FILE:是否为空文件<=:小于等于-eq:等于
-L FILE:符号链接文件-r FILE:是否可读>=:大于等于-le:小于等于
-b FILE:块设备文件-w FILE:是否各写==:等于-lt:小于
-c FILE:字符设备文件-x FILE:是否可执行!=:不等于-ne:不等于
FILE1 -nt FILE2 :FILE1的mtime是否新与FILE2-n String :是否不空 
FILE1 -ot FILE2 :FILE1的mtime是否旧与FILE2-z String:是否为空 
 

4.输入输出和重定向

标准输入:0 默认设备为键盘标准输出:1 默认设备为显示器标准错误输出:2 默认设备为显示器>::覆盖输出 &>错误覆盖输出>> :追加输出 &>>错误覆盖输出&>:合并重定向<:输入重定向<<:此处文档tee:分流,将结果输出到屏幕并重定向 

5.Shell脚本格式

第一行顶格"#!/path/to/a/shell"

6.常用语法结构

条件判断
语法格式示例
单分支if语句if 语句1;then语句1执行结果为真则执行else语句1执行结果为假则执行fi 
12345678#!/bin/basha=1b=1if [ $a -eq $b ];thenecho "yes"elseecho "no"fi
多分支if语句if 语句1;then语句1执行结果为真则执行elif 语句2;then语句2执行结果为真则执行...else所有条件都不满足时执行fi 
12345678910#!/bin/basha=1b=2if [ $a -gt $b ];thenecho "a>b"elif [ $a -lt $b ];thenecho "a<b"elseecho "a=b"fi
循环结构
for varName in LIST;do循环体done
1234#!/bin/bashfor i in {1..10};doecho $idone
for ((var=#;测试条件;修正条件));do循环体done
1234#!/bin/bashfor ((i=1;i<=10;i++));doecho $idone
while 条件语句;do #条件为真时进入循环循环体done
12345#!/bin/bashwhile who|grep “^gentoo”;doecho “gentoo is not login”sleep 3done
until 条件语句;do循环体done
12345#!/bin/bashwhile who|grep “^gentoo”;doecho “gentoo is not login”sleep 3done
条件选择
case $varName inexp1)语句体1 ;;exp2)语句体 2 ;;...*)语句体 n ;;
12345678910#!/bin/bashtmp=ycase $tmp iny|yesecho yes ;;n|no)echo no ;;*)echo “unknown”esac
   

7.函数使用和循环条件控制

函数声明方式
1234567function 函数名{函数体} 函数名() {函数体}
 函数使用方式函数名 [参数....]参数可以在函数体中用位置变量引用循环条件控制continue:提前进入下一轮循环break #: #默认为1,跳出#层循环Linux Shell参数替换 http://www.linuxidc.com/Linux/2013-06/85356.htmShell for参数 http://www.linuxidc.com/Linux/2013-07/87335.htmLinux/Unix Shell 参数传递到SQL脚本 http://www.linuxidc.com/Linux/2013-03/80568.htmShell脚本中参数传递方法介绍 http://www.linuxidc.com/Linux/2012-08/69155.htmShell脚本传递命令行参数 http://www.linuxidc.com/Linux/2012-01/52192.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/105379.htm