Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45364
  • 博文数量: 9
  • 博客积分: 397
  • 博客等级: 二等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-30 14:47
文章分类
文章存档

2013年(6)

2012年(3)

分类: 嵌入式

2013-01-03 15:01:31

shell是操作系统与用户进行交互操作的界面,shell与内核交互的方式:1.直接从键盘输入命令,2.通过shell脚本方式执行。
/etc/shells文件中包含了所有linux系统可以使用的shell。
在某个shell程序中可以通过执行其他shell来改变用户当前所使用的shell。
用户登录时默认使用的shell保存在/etc/passwd文件中。
shell变量:shell变量名可以包含数字、字母、下划线,变量名的开头必须是字母或者下划线。shell变量时对大小写敏感的,一般建议用大写字母来表示shell变量。
shell变量的取值:“shell变量名=值”,等号两边不能有空格。
shell变量的引用:“$变量名”。
shell变量的分类:用户自定义变量(本地变量)、环境变量、位置参数变量、预定义变量。
用户自定义变量:本地变量是由用户自定义的变量,只作用于当前shell,对于在这个shell环境下的子shell程序,他将不能够有效的访问。
自定义变量
自定义变量的设置:$DAY=sunday     $DAY="today is sunday"     若变量本身含有空格则必须用双引号括起来。
自定义变量的查看和引用:echo $DAY  echo "$DAY"     $DAY
自定义的清除:unset DAY
显示所有本地定义的shell变量:set
环境变量
环境变量定义用户工作的环境,用户可以再当前shell和任意子shell中获取它们设置的信息。
环境变量必须用export命令导出来,是其能够作用于所有的shell环境。 export DAY
使用env命令查看所有环境变量。  env
环境变量配置文件:/etc/profile   /etc/bashrc   ~/.bash_profile    ~/.bashrc    ~代表用户主目录
位置变量
shell通过位置参数变量来获得用户在命令行上附加的参数。位置参数变量共有10个:$0-$9,他们分别标识了用户在整个命令行中以空格分隔开的字符串。
预定义变量
$#:传递到脚本的参数的数量。
$*:以一个单字符串显示传递到脚本的所有的参数的内容。
$?:表示命令执行后返回的状态,用于检查上一个命令执行的是否正确。在linux中返回0表示正确执行,返回任意非表示执行错误。
$$:表示当前进程的进程号。
$!:表示后台运行的最后一个进程号。
$0:表示当前执行的进程名。
重定向
<: 标准输入重定向          wc < /etc/passwd
>:标准输出重定向         ls /etc/system > file
>>:将标准输出重定向追加到     ls /etc/passwd >> file
2>:错误输出重定向
2>>: 错误输出重定向追加到
&>:将标准输出和标准错误输出重定向
管道   |
ps | grep bash
shell脚本
shell脚本程序是shell脚本语句的集合,用于实现特定的功能,类似于windows下的.bat批处理文件。
shell脚本程序保存在文本文件中,可以使用文本编辑工具进行阅读和编辑。
shell脚本程序是由shell环境解释执行的,不需要再执行前进行编译。
shell脚本程序在执行时,脚本文件需要可执行的属性。
使用文本编辑器vi建立shell脚本文件。
脚本文件中需要包含的内容:
1.脚本运行的环境设置,需要指明该shell脚本由哪个shell来解释。#!/bin/bash  #!/bin/sh
2.注释行以#开始:  #.........
3.脚本语句:shell命令和系统命令。
在编辑完shell脚本文件后需要对脚本文件的权限进行设置: chmod +x file
脚本程序的执行:
bash  file.sh           
. file.sh
chmod +x file.sh       ./file.sh
条件测试
使用text:text 条件表达式
使用[]:   [ 条件表达式 ]  条件表达式两边必须留一个空格。
流程控制
if then else语句:if语句测试语句,如果语句为真(0),则执行if后的then语句;否则执行if外语句。
if[ 条件表达式 ];then 指令
elif[ 条件表达式 ];then 指令
.
.
.
else 指令
fi
for循环:当变量可以在列表中取值时,执行下面的指令序列,循环替换变量中的值,直到列表中的值被替换完为止。
for 变量名 in 列表;do 指令序列
done
until循环:until在条件为假时,执行指令序列,循环直到条件为真时停止。
until 条件;do 指令序列
done
while循环:while 条件;do 指令序列
done
case语句:case 值 in
         模式1) 指令序列1;;
         模式2) 指令序列2;;
         模式3) 指令序列3;;
esac
函数
函数名()
{
     函数体
}
函数调用:函数调用之前先定义,脚本中没有函数声明;
函数导出:使用.运算符将建立的函数导入shell环境中。 $.file.sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(2320) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~