文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>BLP ch2:shell编程

BLP ch2:shell编程

时间:2007-03-08  来源:pascal4123

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


相关阅读 更多 +
排行榜 更多 +
跳跃大联盟

跳跃大联盟

休闲益智 下载
瓜米

瓜米

游戏工具 下载
克隆人联盟

克隆人联盟

动作格斗 下载