免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1063 | 回复: 0
打印 上一主题 下一主题

Bash脚本编程杂记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-07 15:35 |只看该作者 |倒序浏览
Bash脚本编程杂记
作者:张绍言 整理时间:17:59 2008-1-21
1.用户自定义变量
由字母数学及下划线组成,并且第一个字符不能为数字,大小写敏感。
格式:
name=value
引用时在变量前加$符号
也可以将变量和其他字符组合,这时要将变量用{}括起来,${name}.
数组变量
(1)name[index]=value
(2)name={value1...valuen}此时下标从0开始
export将变量输出到全局环境中供其他子Shell使用,用法为:
export  name
export name=value
local标记变量为局部的,只能被函数内部使用
local name
local name=value
readonly指定变量为只读的,不能被再次赋值
readonly name
2.位置变量/Shell参数
$1~$9分别代表第一到第九个参数
$0代表可执行脚本名
$# 命令行参数个数
$@ 所有的参数,每个用双括号括起来
$* 所有的参数,用双括号括起来
3.与shell有关的变量
(1)Shell自身设置的常用变量
LINENO 正在执行的命令在脚本中的行号
PWD 用户当前目录全名
OLDPWD 最近一次执行cd之前,用户当前目录的全名
PPID 父进程ID
$ 当前进程ID
RANDOM 随机数(0-32767)
SECONDS BashShell运行时间,单位为秒
REPLY Select和Read命令使用
UID 当前用户ID
_ 上一条命令使用的最后一个参数
(2)影响Shell行为的一些常用环境变量
PATH 命令搜索路径,以冒号分隔,与DOS不同的是当前目录不在系统路径中.
HOME 用户home目录的路径名,是cd命令的默认参数
LD_LIBRARY_PATH 寻找库的路径,以冒号分隔
MANPATH 寻找手册页的路径,以冒号分隔
PROMPT_COMMAND 指定在主命令提示符前应执行的命令
PS1 主命令提示符
PS2 二级命令提示符,命令执行过程中要求输入数据时用
PS3 elect的命令提示符
PS4 调试命令提示符
TERM 终端类型
LOGNAME 用户登录名
Shell类型
sh,bash,csh,tcsh,ksh
最常用的是bash shell
文件/etc/shells给出了Linux系统上所有已安装的Shell
这样查看cat /etc/shells
默认Shell设置在/etc/passwd文件中指定的
切换Shell方法:在终端里输入新的Shell名即可
4.输入输出重定向
command>file 将输出结果重定向到一个文件
command>&file 将输出结果和标准错误重定向一个文件
command>>file将输出结果追加到文件中
command>>&file将输出结果和标准错误追加到一个文件
5.管道(pipe)
pipe可以将一个程序的输出送到另一个程序的输入
command1|command2[|command3...]
6.前台 command ;
后台 command &
7.Shell所有变量取值都是一个字符串,采用$Var的形式来引用名为Var变量的值
8.预定义变量
$# 位置参数的数量
$* 所有位置参数的内容
$? 命令执行后返回的状态(0:正确,1:错误)
$$ 当前进程的进程号,常用于临时文件的命名
$! 后台运行的最后一个进程号
$0 当前执行的进程名
8.显示本地变量 set
消除本地变量 unset name
显示环境变量 env
消除环境变量 unset name
9.Shell脚本的通用构架
#!/bin/bash
执行代码
chmod +x test.sh
./test.sh
10.运算符
算术运算符:+,-,*,/
按位运算符:~,>,&,|,^
逻辑运算符:&&,||,>,==,>=
11.表达式
1)$[] 可以接受不同基数的数字表达式
表达式为TRUE时输出1,表达式为FALSE时输出0
2)字符表达式,单引号原样显示,双引号显示变量的值
12.if语句
if 条件
语句1
then
语句2
fi
13.for语句
for 变量名 in 列表
do
命令
done
14.until语句
until 条件
do
命令
done
15.while语句
while 条件
do
命令1
break
命令2
continue
命令3
...
done
16.输入输出
1)echo 输出特定的信息
2)read VariableName读取用户输入存放变量中
3)cat file 显示文件内容
4)| 管道
17.Shell函数
1)函数名()
{
... ...
}
2)function 函数名()
{
... ...
}
18.Bash基本配置文件
/etc/bashrc
/etc/profile
普通用户的环境变量定义文件
/home/name/.bash_profile
PATH=$PATH:PATH1
重启生效或source .bash_profile
19.Shell变量,现定义,现赋值
环境变量是永久性变量,其值不随脚本执行结束后消失.
临时变量是Shell脚本内部定义的,当脚本执行完毕后自动消失。
20.可以将一个命令的执行结果赋值一个变量有两种方法
一种是使用倒引号括起来``(在左上角~键上)
dir=`pwd`
另一种是$(命令)
dir=$(pwd)
21.Bash提供一维数组,下标从0开始,用下标引用数组元素.
赋值形式:数组名[下标]=值
显式声明数组
declare -a 数组名
读取元素值
${数组名[下标]}
读取数组
read 变量1 [变量2 ...]以空格或制表符分隔
22.别名
alias [name{=value}]...

alias ll="ls -al"
取消别名
unalias name
23.$表示变量替换
倒引号表示命令替换
注释以#开头
24.多条命令可在同一行中,用分号;分隔
逻辑与&&
命令1 && 命令2
先执行1如果成功才执行2,若不成功则不执行2
逻辑或 ||
命令1 || 命令2
先执行1如果不成功则执行2,若成功则不执行2
25.整数算术运算
let arg...
例:
let "j=i*6+2"
等价于
((j=j*6+2))
如果表达式值非0,返回状态值0,否则返回1
26.控制语句
if 测试条件
then 命令1
else 命令2
fi
条件测试:
一是test命令
二是用一对方括号将测试条件括起来(留有空格)
三是[[条件表达式]]
case 字符串 in
模式字符串1) 命令
...
命令;;
模式字符串2) 命令
...
命令;;
...
模式字符串n) 命令
...
命令;;
esac
while 测试条件
do
命令表
done
until 测试条件
do
命令表
done
for 变量 in 值表
do
命令表
done
for 变量 in 文件正规表达式
do
命令表
done
跳出循环
break [n]
n表示跳出的循环层数,默认为1
continue [n]
回到本层循环开头,进入下一循环
函数调用时直接得用函数名,不必带圆括号
函数中的位置参数$1,$2对应于调用语句中的实参
退出函数
return [n]
n为退出函数的返回值
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/56374/showart_491304.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP