2013年3月20日 星期三 晴



变量分类



1、环境变量



PATH:命令搜索路径


PS1:主提示符


UID:用户ID号



系统初始化配置文件


[root@desktop7 ~]# vim /etc/profile



[root@desktop7 ~]# vim /etc/bashrc



[root@desktop7 ~]# vim /root/.bashrc                        #/home目录下(此处为根用户)



[root@desktop7 ~]# vim /root/.bash_profile                  #/home目录下(此处为根用户)



2、自定义变量



(1)定义普通变量



[root@desktop7 ~]# file=$HOME$NAME/.bashrc


[root@desktop7 ~]# echo $file


/root/.bashrc


[root@desktop7 ~]#




[root@desktop7 ~]# echo $HOME


/root



(2)定义特殊变量



a、等待读入



[root@desktop7 ~]# vim a.sh


  1 #!/bin/bash


  2


  3 read c


  4


  5 echo $c


  6


[root@desktop7 ~]# chmod a+x a.sh


[root@desktop7 ~]# ./a.sh



(Ctrl+c组合键)


[root@desktop7 ~]#



b、加内容



[root@desktop7 ~]# vim a.sh


  1 #!/bin/bash


  2


  3 echo "Please Input:"


  4


  5 read c


  6


  7 echo $c


  8


               


[root@desktop7 ~]# ./a.sh


Please Input:



[root@desktop7 ~]#



c、继续增加内容



[root@desktop7 ~]# vim a.sh


  1 #!/bin/bash


  2


  3 echo "Please Input your password:"


  4


  5 read c


  6


  7 echo $c


  8



[root@desktop7 ~]# ./a.sh


Please Input your password:



[root@desktop7 ~]#



d、不换行,要求输入内容



 1 #!/bin/bash


  2


  3 echo -n "Please Input your password:"               #加-n


  4


  5 read c


  6


  7 echo $c


  8


~               


[root@desktop7 ~]# ./a.sh


Please Input your password:bb                            #无输入不进行下一步操作,输入内容回显(以后应用)


bb


[root@desktop7 ~]#



e、简单方式



[root@desktop7 ~]# vim a.sh


  1 #!/bin/bash


  2


  3 read -p "Please Input your password:" c               #改变输入方式 c前面有空格


  4


  5 echo $c


  6



[root@desktop7 ~]# ./a.sh


Please Input your password:c                             #输出结果与d相同



read 用于交互式脚本,要求客户输入信息时使用


自动化脚本不可用read



f、显示相应内容(简单方式)



[root@desktop7 ~]# vim a.sh


  1 #!/bin/bash


  2


  3 read -p "I will delete the tmp file,Are you sure(Y/N)?" c


  4


  5 echo $c


  6


~       


[root@desktop7 ~]# ./a.sh


I will delete the tmp file,Are you sure(Y/N)?



3、位置变量



(1)$0~$9



[root@desktop7 ~]# vim a.sh


  1 #!/bin/bash


  2


  3 echo $0 $1 $2


  4


  5 echo $3 $4


 


[root@desktop7 ~]# ./a.sh aa bbb jjdsahj   jkasuydghj


./a.sh aa bbb


jjdsahj jkasuydghj


[root@desktop7 ~]#



对比脚本文件内容



[root@desktop7 ~]# cat a.sh


#!/bin/bash



echo $0 $1 $2



echo $3 $4


[root@desktop7 ~]#



说明



$0 $1 $2 $3 $4 $5 $6 $7 $8 $8 $9


分别代表该行第一个单词、词组等,第二个、第三个......第十个



[root@desktop7 ~]# vim b.sh


  1 #!/bin/bash


  2


  3 read -p "Del $1,(Y/N)?" c


  4


  5 read $c


     


[root@desktop7 ~]# chmod a+x b.sh


[root@desktop7 ~]# ./b.sh /tmp


Del /tmp,(Y/N)?


此命令将一直进行,直至手动终止



放于后台继续



[root@desktop7 ~]# vim b.sh


  1 #!/bin/bash


  2


  3 read -p "Del $1,(Y/N)?" c


  4


  5 read $c&                                     #在命令后加&放于后台,则输入内容即可进行下一条命令


[root@desktop7 ~]# ./b.sh /tmp


Del /tmp,(Y/N)?y


[root@desktop7 ~]#



(2)$@、$#、$*



[root@desktop7 ~]# vim c.sh


  1 #!/bin/bash


  2


  3 echo $@                                      #使用$@,显示所有内容


[root@desktop7 ~]# chmod a+x c.sh



[root@desktop7 ~]# ./c.sh aa bb cc dd abcd


aa bb cc dd abcd


[root@desktop7 ~]#



新月如钩,公孙策孤枕难眠,长叹一声道:“哎!床上要是有抱枕就好了,能睡得安心一点!”


这句话恰好被蹲在窗外的包大人听到了,再也按耐不住,一把推开门走了进去......普及普通话是多么重要......



[root@desktop7 ~]# chmod a+x d.sh


  1 #!/bin/bash


  2


  3 echo $#                                       #使用$#表示统计当前行单词或词组个数


     


[root@desktop7 ~]# chmod a+x d.sh


[root@desktop7 ~]# ./d.sh 321 123 123456 kjhhu uydfuj


5


[root@desktop7 ~]#



[root@desktop7 ~]# vim e.sh


  1 #!/bin/bash


  2


  3 echo $*                                       #使用$*表示显示所有内容,但作为整体(应有“”但不显示)


          


[root@desktop7 ~]# chmod a+x e.sh


[root@desktop7 ~]# ./e.sh cc nn mm zz qq kk


cc nn mm zz qq kk


[root@desktop7 ~]#



(3)$$、$!、$?



[root@desktop7 ~]# vim f.sh


  1 #!/bin/bash


  2


  3 echo $$                                        #使用$$表示查看当前进程号



[root@desktop7 ~]# chmod a+x f.sh


[root@desktop7 ~]# ./f.sh


6269


[root@desktop7 ~]# ./f.sh


6271


[root@desktop7 ~]# ./f.sh


6272


[root@desktop7 ~]#



使用$$



[root@desktop7 ~]# vim g.sh


  1 #!/bin/bash -x


  2


  3 NUM=$$


  4


  5 echo $NUM>/var/run/f.pid


  6


  7 kill `cat /var/run/f.pid`



[root@desktop7 ~]# ./g.sh


+ NUM=7114


+ echo 7114


++ cat /var/run/f.pid


+ kill 7114


Terminated



使用$!


[root@desktop7 ~]# vim fir.sh


  1 #!/bin/bash


  2


  3 firefox


  4


  5 echo $!>/var/run/fir.pid



[root@desktop7 ~]# chmod a+x fir.sh


[root@desktop7 ~]# ./fir.sh                          #打开firefox程序


[root@desktop7 ~]#



养成好习惯,随时删除多余文件



[root@desktop7 ~]# vim fir.sh


  1 #!/bin/bash


  2


  3 firefox&


  4


  5 echo $!>/var/run/fir.pid


  6


  7 kill $(cat /var/run/fir.pid)


  8


  9 rm -rf /var/run/fir.pid



[root@desktop7 ~]# chmod a+x fir.sh


[root@desktop7 ~]# ./fir.sh


./fir.sh: line 9:  5388 Terminated              firefox



验证


[root@desktop7 ~]# cd /var/run


[root@desktop7 run]# ls


acpid.socket      gdm.pid        mdmpd            sendmail.pid


atd.pid           gpm.pid        messagebus.pid   setrans


audispd_events    haldaemon.pid  netreport        sm-client.pid


auditd.pid        hpiod.pid      NetworkManager   snmpd


autofs.fifo-misc  hpiod.port     nscd             sshd.pid


autofs.fifo-net   hpssd.pid      pcscd.comm       sudo


avahi-daemon      hpssd.port     pcscd.pid        syslogd.pid


console           iscsid.pid     pcscd.pub        tog-pegasus


crond.pid         iscsiuio.pid   pm               tog-pegasus.pid


cron.reboot       klogd.pid      ppp              utmp


cups              libvirt        restorecond.pid  virt-who.pid


cupsd.pid         libvirtd.pid   rpc.statd.pid    wpa_supplicant


dbus              lvm            saslauthd        xfs.pid


dhclient-br0.pid  mdadm          sdp



无fir.pid



高中考物理的时候,大家都在认真答卷,万籁俱寂。这时候教室的角落里传出一个女生贼窃窃的低声:“喂,一千克是多少克呀?”全班顷刻笑翻。



$?上一条命令是否执行成功(成功为0,失败为其他值)



[root@desktop7 ~]# echo $?


0



[root@desktop7 ~]# vim g.sh


  1 #!/bin/bash


  2


  3 exit 22                                           #给退出时的程序赋值为22


  4


  5 NUM=$$


  6


  7 echo $NUM>/var/run/f.pid


  8


  9 kill `cat /var/run/f.pid`



[root@desktop7 ~]# ./g.sh


[root@desktop7 ~]# echo $?


22



[root@desktop7 ~]# vim g.sh


  1 #!/bin/bash


  2


  3 exit 45                                           #给退出时的程序赋值为45


  4


  5 NUM=$$


  6


  7 echo $NUM>/var/run/f.pid


  8


  9 kill `cat /var/run/f.pid`


[root@desktop7 ~]# ./g.sh


[root@desktop7 ~]# echo $?


45


[root@desktop7 ~]#