Linux shell入门基础(六)

时间:2022-05-14 23:38:34
六、Shell脚本编程详解
将上述五部分的内容,串联起来,增加对Shell的了解
01.shell脚本
shell:
#
#perl
#python
#php
#jsp
不同的脚本执行不同的文本,执行的角色是不一样的;
#shell scripts(UNIX Like系统的原则有一条:程序越短越好)
#bash csh tcsh ksh
#which startx(查看文件的路径)
/usr/X11R6/bin/startx
#vi `which startx`
#!/bin/sh
……
#vi /etc/rc.d/rc.sysinit
(修改系统名,颜色等属性)
#echo $SHELL
/bin/bash
脚本中的#表示注释,但第一行中的#有特殊的意义:
如:第一行字符非#,表示这是一个bash脚本
第一行中是#,但第二个字符不是i,表示这是一个csh脚本
第一行字符是#,且第二个字符是!,表示调用其后指定
的/usr/bin/python2.2程序来执行以下这个脚本
02.shell中正则表达式
bash本身不提供正则表示式的支持,只支持通配符* ?
正则表达式可以通过一些命令去执行,比如grep,vi,sed,awk
比如Linux shell入门基础(二)中的介绍
03.与shell脚本的交互
#cd /tmp/ddd/
#ls
……
#rm -rf *
#vi a
#!/bin/bash
echo $1 \$1
echo $2 \$2
echo $3 \$3
echo $# \$\#
echo $? \$\?
echo $$ \$\$
wq
#chmod a+x a
#./a
$1
$2
$3
0 $#(输入多少个参数)
0 $?
3061 $$
#./a aaa bbb ccc
aaa $1
bbb $2
ccc $3
4 $#
0 $?
3064 $$
#vi b
#!/bin/bash
echo stop $1 $2ing ……
#./b httpd stop
http stoping……
#read读入数据给变量
#echo 输出数据
#printf输出数据
#vi a
#!/bin/bash
echo $1(做输入) \$1
echo $2 (做输入)\$2
echo $3 (做输入)\$3
echo $# (查看有几个参数)\$\#
echo $?(shell的命令是否成功执行,不成功则,执行其他) \$\?
echo $$ \$\$
read -p "please input your name" AAA
prinf "$AAA is fool"
#./a aaa bbb ccc
aaa $1
bbb $2
ccc $3
4 $#
0 $?
3064 $$
please input your name:byf
byf is fool
#printf "\t hello\n"
hello
#help printf
#man bash
……
:printf
#printf "\a"
(产生一个声音)
04.bash的执行方式
1.输入脚本的绝对路径或者相对路径
/root/bachup
./bachup
2.bash脚本或tcsh及脚本,找子shell来执行
表示以bash或tcsh来执行脚本
bash /root/backup
3.在脚本的路径前加“.”,表示某个路径下有一个脚本
../backup
. /root/backup
#vi b
pstree |grep -A2 -B2 pstree
bash--pstree
#pstree |grep -A2 -B2 pstree
#bash ./b
bash--bash--pstree
#chmod a+x b
bash--bash--pstree
#vi b
export BBB=byf(将BBB设置成byf目录及子目录下的环境变量)
wq
#cat b
export BBB
#./b
pstree |grep -A2 -B2 pstre
#echo BBB
#. /tmp/b(在当前shell脚本中执行)
#. ./b
#echo $BBB(取出BBB的变量值)
byf