Linux Shell 编程学习实践(一)——认识Shell编程

Shell script 基本结构
#
/bin/bash                          --------bash shell开头必须部分
# description                         
--------
注释部分(可有可无,为了阅读方便最好加以说明)
variable name=value            
---------
变量部分,声明变量,赋值
control segment   
    ---------
流程控制结构,如判断、循环、顺序

Shell 特性

别名          alias                  eg. alias ll = “ls -l”
管道          a |b                   a命令的输出作为b命令的输入 eg. ls |sort   ls列举的项排序
命令替换   a `b`                 b命令的输出作为a命令的输入 eg.   ls `cat myfile` 列举出cat myfile的输出项
后台运行   nohup command&    可通过jobs -l查看后台运行的脚本
重定向       >,<                      可以改变程序运行的输出来源和输入来源
变量                                       可以用$varname 来调用变量
特殊字符
                                   
  `
用来替换命令
                   
\
用来使shell无法认出其后的特殊字符,使其失去特殊含义
                   
允许一行放多个命令
                   
()
创建成组的命令   ??
                   
{}
创建命令块       ??    

第二章:变量和运算符

本地变量:在用户现在的shell生命期的脚本中使用。设置变量various_name=value.可用set 来查看。用readonly可以使变量只读
环境变量:用于当前用户下所有用户进程(不限于现在的shell)。
                     
设置变量:export various_name=valueenv查看
                     
readonly可以使变量只读。
变量替换   
echo ${variable name}                  
显示实际值到variable name
echo ${variable name:+value}    
如果设置了variable name,则显示其值,否则为空
echo ${variable name:?value}    
如果未设置variable name,则显现用户定义错误信息value
echo ${variable name:-
l}     
如果未设置,则显示其值
echo ${variable name:=value}     
如果未设置,则设置其值,并显示
清除变量                                    unset variable name
位置变量
位置变量表示$0,$1,$2...$9
$0 ----
脚本名字
$1 ----
根据参数位置表示参数1

eg1.

#1/bin/bash
#parm.sh
echo "this is script name : $0"
echo "this is parameter 1 : $1"
echo "this is parameter 2 : $2"

终端:

junsheng@ubuntu:~$ sh parm.sh
this is script name : parm.sh
this is parameter 1 :
this is parameter 2 :
junsheng@ubuntu:~$ sh parm.sh a b
this is script name : parm.sh
this is parameter 1 : a
this is parameter 2 : b

eg2:(从终端copy下来的)

junsheng@ubuntu:~$ cat parm1.sh
#!/bin/bash
#parm1.sh
find . -name $1 -print
junsheng@ubuntu:~$ chmod u+x parm1.sh
junsheng@ubuntu:~$ sh parm1.sh parm
junsheng@ubuntu:~$ sh parm1.sh parm.sh
./parm.sh

特殊变量
$#         
传递到脚本的参数个数
$*         
以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9
$$         
脚本运行的当前进程ID
$!         
后台运行的最后一个进程的进程ID
$@        
传递到脚本的参数列表,并在引号中返回每个参数
$-         
显示shell使用的当前选项,与set命令功能相同
$?        
显示最后命令的退出状态,0表示没有错误,其他表示有错误

junsheng@ubuntu:~$ cat parm2.sh
#1/bin/bash
#parm2.sh
echo "this is shellname : $0"
echo "this is parm1 : $1"
echo "this is parm2 : $2"
echo "show parm number : $#"
echo "parm list : $*"
echo "this id is : $$"
echo "this back id is : $!"
echo "parm list2 : $@"
echo "show exit state : $?"
junsheng@ubuntu:~$ sh parm2.sh a b
this is shellname : parm2.sh
this is parm1 : a
this is parm2 : b
show parm number : 2
parm list : a b
this id is : 10094
this back id is :
parm list2 : a b
show exit state : 0


posted @ 2011-10-21 19:49  hello GG  阅读(1025)  评论(1)    收藏  举报