Unix--系统下Shell语法分析
2011-11-06 23:39
225 查看
Shell可以看作是一个命令行解释器,它是Unix操作系统下传统的用户和计算机的交互界面,用户直接输入命令来执行各种各样的任务,它类似于Windows 9X下的command.com或者是基于Windows NT的各种系统下的cmd.exe;同时Shell又是一种程序设计语言,它可以交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令。
Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。
Shell脚本执行方式:
(1) 输入定向到Shell脚本(Shell从文件中读取命令后执行)
bash < 脚本名
(2) 以脚本名作为参数(也可以:· 脚本名参数)
bash 脚本名 参数1 参数2
(3) 将Shell脚本的权限设置为可执行,然后在提示符下直接执行它。
chmod a+x 脚本名
脚本名
注意:如果在shell中指定了#!/bin/bash;可以不用在crontab中写bash,直接/xx/xx/xx.sh即可
Shell语法分析:
1.变量:
(1)定义:变量名=字符串
(2)使用(打印变量的值): echo $变量名
(3)变量赋值:
普通的赋值
xx="dd dkkd dd"
将命令的结果赋值,有两种形式
a) `命令`:
var = ` pwd `
b) $(命令):
var=${pwd}
2.数组:
(1)定义:
a) 数组名[下标]=值
b) declare -a 数组名
c) a=(a1 a2 a3 a4)
(2)数组值:
${数组名[下标]}
若没有给出数组元素的下标,则数组名表示下标为0的数组元素
表达式${#arr[i]}的值是数组arr第i个元素值的长度(字符个数)。
3.通配符:
* 表示匹配任意字符0次或多次出现
?表示匹配任意一个字符
[ ]表示其中任何一个字符
! 表示不在一对方括号中所列出的字符,a[!1-9] 即 a非1-9数字
+ 表示匹配任意字符1次或多次出现
(xx | xx) 表示或关系
4.引号:
(1)单引号: 普通字符
(2)双引号:除“$”、“`”、“"”、“\”或换行符外,其他都作为普通字符
$ 表值
\ 转义字符
(3)倒引号: 命令行
如:pwd `
5.条件语句:
(1)if
if 条件
then 命令1
else 命令2
fi
(2)case
case 字符串 in
模式字符串1) 命令
…
命令;;
模式字符串2) 命令
…
命令;;
…
模式字符串n) 命令
…
命令;;
Esac
例如:
case $1 in
one)
echo "one"
;;
two)
echo "two"
;;
three)
echo "three"
;;
*)
echo "ohter"
exit 1
esac
6.循环语句:
(1)while
while 条件
do
命令
Done
(2) until
until 测试条件
do
命令表
Done
(3)for
for 变量 in 值(正则表达式)
do
命令表
Done
7.Break与Continue
break n :表示跳出几层循环,默认值是1,表示只跳出一层循环
continue n :表示从最内层循环体向外跳到第几层循环,默认值是1
8.函数:
函数声明如下:
函数名( )
{
命令
}
函数定义也可以通过function关键字声明:function函数名(){}
注:可以通过return n 退出函数
Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。
Shell脚本执行方式:
(1) 输入定向到Shell脚本(Shell从文件中读取命令后执行)
bash < 脚本名
(2) 以脚本名作为参数(也可以:· 脚本名参数)
bash 脚本名 参数1 参数2
(3) 将Shell脚本的权限设置为可执行,然后在提示符下直接执行它。
chmod a+x 脚本名
脚本名
注意:如果在shell中指定了#!/bin/bash;可以不用在crontab中写bash,直接/xx/xx/xx.sh即可
Shell语法分析:
1.变量:
(1)定义:变量名=字符串
(2)使用(打印变量的值): echo $变量名
(3)变量赋值:
普通的赋值
xx="dd dkkd dd"
将命令的结果赋值,有两种形式
a) `命令`:
var = ` pwd `
b) $(命令):
var=${pwd}
2.数组:
(1)定义:
a) 数组名[下标]=值
b) declare -a 数组名
c) a=(a1 a2 a3 a4)
(2)数组值:
${数组名[下标]}
若没有给出数组元素的下标,则数组名表示下标为0的数组元素
表达式${#arr[i]}的值是数组arr第i个元素值的长度(字符个数)。
3.通配符:
* 表示匹配任意字符0次或多次出现
?表示匹配任意一个字符
[ ]表示其中任何一个字符
! 表示不在一对方括号中所列出的字符,a[!1-9] 即 a非1-9数字
+ 表示匹配任意字符1次或多次出现
(xx | xx) 表示或关系
4.引号:
(1)单引号: 普通字符
(2)双引号:除“$”、“`”、“"”、“\”或换行符外,其他都作为普通字符
$ 表值
\ 转义字符
(3)倒引号: 命令行
如:pwd `
5.条件语句:
(1)if
if 条件
then 命令1
else 命令2
fi
(2)case
case 字符串 in
模式字符串1) 命令
…
命令;;
模式字符串2) 命令
…
命令;;
…
模式字符串n) 命令
…
命令;;
Esac
例如:
case $1 in
one)
echo "one"
;;
two)
echo "two"
;;
three)
echo "three"
;;
*)
echo "ohter"
exit 1
esac
6.循环语句:
(1)while
while 条件
do
命令
Done
(2) until
until 测试条件
do
命令表
Done
(3)for
for 变量 in 值(正则表达式)
do
命令表
Done
7.Break与Continue
break n :表示跳出几层循环,默认值是1,表示只跳出一层循环
continue n :表示从最内层循环体向外跳到第几层循环,默认值是1
8.函数:
函数声明如下:
函数名( )
{
命令
}
函数定义也可以通过function关键字声明:function函数名(){}
注:可以通过return n 退出函数
相关文章推荐
- UNIX和LINUX系统的SHELL正则表达式语法
- UNIX和LINUX系统的SHELL正则表达式语法
- unix系统下shell打印脚本
- Unix系统的SHELL程序如何将字符串分割成数组
- 对自然语言理解系统中引入语法分析技术的质疑
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- UNIX通用系统变量和shell命令行参数
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- shell中的函数 shell中的数组 告警系统需求分析
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- android系统安全策略te语法分析
- shell中的函数、数组及告警系统需求分析
- unix下shell程序备份系统关键信息
- UNIX系统中struct tms 分析《转载》
- shell中的函数、shell的数组、告警系统需求分析
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- UNIX通用系统变量和shell命令行参数(转)
- 20.16 20.17shell中的函数(上下);20.18 shell中的数组;20.19 告警系统需求分析
- UNIX/LINUX SHELL 正则表达式语法