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 ~]#