Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1665765
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: LINUX

2007-03-08 14:27:05

shell 是你和linux系统之间的接口. 当然X Windows也是一个接口.

BASH 是linux缺省安装的shell. /bin/sh实际上是/bin/bash的链接.

查看版本使用命令 /bin/sh -version

管道和重定向

重定向输出
重定向输出用>操作符
ls -l > a.txt
ps >> b.txt 是在现有文件后面追加.

重定向输入
重定向输入用<操作符

管道
管道用操作符|
ps|sort|more

shell脚本有两种执行方式:
1. >/bin/sh shell_file

2. 把一个shell脚本转变成可执行的
   chmod +x shell_file


shell的语法
❑ Variables: strings, numbers, environments, and parameters
❑ Conditions: shell Booleans
❑ Program control: if, elif, for, while, until, case
❑ Lists
❑ Functions
❑ Commands built into the shell
❑ Getting the result of a command
❑ Here documents

Variables

变量在使用之前无需声明类型.
所有变量均被认为是字符串类型.
自定义的变量名通常全部小写.
赋值符号两边不得有空格.
取变量的值应在变量名前加上$.

例子:
$ salutation=7+5
$ echo $salutation
7+5
$ salutation=Hello
$ echo $salutation
Hello

如果变量的值中间有空格,两侧必须用双引号括括起来.
例子:
$ salutation=”Yes Dear”
$ echo $salutation
Yes Dear

shell脚本执行之前,有几个环境变量会初始化

$HOME         当前用户的主目录
$PATH         搜索路径 
$IFS          shell脚本里接收输入的分隔符
$0            shell脚本的名字
$1, $2, ...   传递给shell脚本的单个参数.
$*            传递给shell脚本的全部参数的列表(用$IFS的第一个字母分隔).
$#            传递给shell脚本的参数个数
$$            shell脚本的进程ID

Conditions
条件结构:

if condition
then
    statements
else
    other statements
fi

字符串条件
-n string                  字符串不为空
-z string                  字符串为空
string1 = string2          字符串相同
string1 != string2         字符串不相同           

算术比较
expression1 -eq expression2   表达式相等
expression1 -ne expression2   表达式不相等
expression1 -gt expression2   前者大于后者
expression1 -ge expression2   前者大于或等于后者
expression1 -lt expression2   前者小于后者
expression1 -le expression2   前者小于或等于后者
! expression                  表达式为false

文件条件
-d file      文件是一个目录
-e file      文件存在
-f file      文件是一个正则文件
-g file      文件属于某个组
-r file      文件可读
-s file      文件尺寸非零
-u file      文件属于某个用户
-w file      文件可写
-x file      文件可执行

for

for variable in values
do
    statements
done


while

while condition
do
    statements
done


case


case
variable in
    pattern [ | pattern] ...) statements;;
    pattern [ | pattern] ...) statements;;
    ...

esac

function

function_name () {
    statements
}

Commands
可以打2类命令:
外部命令(普通命令),可以在命令提示符下执行;
内部命令(内建命令),不可以像外部命令一样被调用.大部分内部命令都是符合POSIX规范的标准程序.

主要内部命令有:
break
:
continue
.
echo
eval
    非常有用,允许你对一个表达式进行计算

exec
exit
exec
export
expr
printf
return
set
shift
trap
unset
find
grep







阅读(660) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~