Chinaunix首页 | 论坛 | 博客
  • 博客访问: 127907
  • 博文数量: 36
  • 博客积分: 2092
  • 博客等级: 大尉
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-04 17:33
文章分类
文章存档

2011年(18)

2010年(18)

我的朋友

分类: LINUX

2011-08-23 16:17:31

在定义变量时,如果有空格,记得用双引号来括起来。
变量=变量值

接下来是数组变量
数组名[n]=变量值    这只能一个一个赋值。
数组名={a a a }    默认从0开始
数组名1={[3]=a [33]=a [23]=a }   自定下标
定义数组后,可再赋其下标值
数组名1[n]=变量值

显示
echo ${数据名[下标号]}  可用1-n/*/@

shell支持定义变量为只读
变量=变量值
readonly 变量         变量只能读。不能再从赋值,也不能删除

对不常用的变量可进行删除
unset 变量

通过export 将变量放入环境中
export 变量
在/root/.bash_profile 文件,就常用export让变量加入环境变量中。

用户变量是用户可手工设置和重设的变量,Shell变量在初始化和使用中设置的变量,用户可以引用或改变这些变量的值
echo $uid /path  等等都是shell变量。


替换
文件名替换通配符:*(0/多个字符)  ?(一个字符) [characters](匹配字符集之一)
如查找文件 :  ls aa*/?/[kdkd/a-z\-\+\\\'\"]  []里面的符号要用转义字符\

变量替换
${parameter:-word}         若p为空或未设置,则用w代替p进行替换,但p值不变  :PSI=${p:-world}
${parameter:=word}         若p为空或未设置,则p值设为w值
${parameter:?message}      若p为空或未设置,则message作为标准错误要印出来。可用来检查变量。
${parameter:+word}         若p设置了,则用w代替p进行替换,但p值不变

注:在shell脚本变量(shell里的变量),只在shell文件运行时有效,shell结束后,没效。

命令替换
在shell文件里。命令用` ` 后引号而不是''单引号或$(变量)
DATA=`date`    USERS=`who | wc -l`  ps -aux | grep 'id -un'

算述替换
foo=$((..))

引用
关掉一个字符的特殊意义称为“引用”
1,使用反斜线字符\
2,使用单撇号'    单撇号内的所有特殊字符都失去特殊含义
3,使用双撇号“   多数失去特殊含义,除: $ ` \$ \' \" \\   这是shell下,不是grep。如grep "^_"

特殊字符简称元字符。如*?[]"'()^<>等等。
述语:特殊字符,元字符,通配符,所有这些术语指出的都是不能按其意思理解的字符。

grep '[0-9][0-9] * $' report2 report7 这是正规表达式(通配符)模式,grep用它在report2和report7的内容间搜索与其匹配的字符串,用于grep模式中的通配符必须被引用,以免shell错误地使用。

引用规则:
反斜线取消紧跟其后一个字符的特殊含义
在命令执行前,正在引用的字符被删除
单撇号删除所有它所所引用字符的特殊含义
引用规则字符是不会出错的
单撇号不能插在单撇号之间
双撇号删除了大部分它所引用字符的特殊含义
引用可以忽略单词边界
不同类型的引用可以复合在一个命令中
为将空格嵌入单个参数中,需要引用它
引用换行符以达到使一个命令在下一行续行的目的
使用引用访问包含特殊字符的文件名
引用正规表达式通配符
使用反斜线打开echo转义序列
为cpio和find引用通配符

在find grep等命令中,通配符对应用双撇号,以免错误shell命令。

流控制。
命令在shell脚本中执行的顺序称为脚本流。
注:定义一个变量后,它仅存在于当前shell进程中,它是本地变量。在其它shell运行,不起作用,必须用export命令转为环境变量。简称导出。
判断if后面的test expression是否成立,真为0,假为非0
if list1; then         或     if list1; then
   list2;                        list2;
elif list3; then              else
   list4;                        list5;
else                          if
   list5;
fi
test expression可以是文件测试,字符串比较,数字比较等等。它可用[ expression ] []里面二边必须与expression空格分开。  if [ a ];

文件测试的选项
[ -b file ]         文件是否存在且是一个块特殊文件,则为真
-c file                                   字符
-d file                                   目录
-e file             是否存在
-f file                                   规则
-g file                            设置了SGID位的值
-h file                            符号连接
-k file                            设置sticky位的值
-p file                            命名管道   
-r file                            可读
-s file                            大小大于零
-u file                            设置SUID位的值
-w file                            可写
-x file                            可执行
-o file                            被有效用户ID所拥有

进程:
我们可以使命令前/后台运行。系统默认输入输出于与用户终端相联。用户可以重定向设置。

在用户在系统进行工作时,突然中断,则用户的进程也就终止,如要长时间运行,可应用nohup/&来使后台进程进行。

在后台运行一个进程,用户不需等待一个进程完成再启动另一个进程。

在终端下,stty -a 查看哪个快键执行哪个功能。

bg命令使用户能把悬挂进程置到后台。fg把进程返回到前后。

在启动一个运行时间长的进程时,按ctrl+Z 让它悬挂起来,然后bg ,让要在后台恢复工作。
fg默认是把最近一个被 悬挂或移到后台的进程将被移到前台。 fg  或者 fg %[1-n]

在挂悬或后台进程用jobs 查看,因为它是前台进程,所以只能查看到后台进程。

用另一种ps ,它可以查到前后台进程情况。

关闭与杀掉一个进程号,kill  -9  .












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

hitechman2011-09-28 10:37:20

If判断:
$0 这个程式的执行名字,及脚本名
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用