六、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

Linux shell入门基础(六)的更多相关文章

  1. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  2. Linux shell入门基础(八)

    八.shell脚本sed&awk 01.sed的使用 流编辑器-Steam Editor #ed /etc/passwd 1,10p …… 1s/root/byf/p(替换root为byf) ...

  3. Linux shell入门基础(五)

    五.bash运算及启动脚本 01.使用bash的命令历史 #history …… #set(显示所有的变量) | grep HIS HISTFILE=/root/.bash_history HISTF ...

  4. Linux shell入门基础(三)

    三.输入输出重定向及管道 01.过滤器   Linux过滤器分三种:     1.过滤器(重定向只对过滤器有作用) #gzip a(将a作为输入源,涉及到输入输出)     2.编辑器     3.交 ...

  5. Linux shell入门基础(二)

    二.shell对文本的操作 01.查看文本的命令 #cat /etc/passwd(并非对文本文件操作) #tail -5 /etc/passwd(查看末尾5行) #tail -f /var/log/ ...

  6. Linux shell入门基础(七)

    七.bash脚本中的流程控制   条件判断控制   -[]([]中的表达式是否为真)  &&(前边的结果是true的时候执行后边的命令)   ||(前边的结果是false的时候执行后边 ...

  7. Linux shell入门基础(四)

    四.进程优先级前台后台 01.进程控制 #find /name aaa & #ps aux | grep find #updatedb &  #ps aux | grep update ...

  8. 1)Linux程序设计入门--基础知识

    )Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...

  9. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

随机推荐

  1. CSS实现DIV三角形

    本文内容收集来自网络 #triangle-up { width:; height:; border-left: 50px solid transparent; border-right: 50px s ...

  2. java 多线程sleep和wait的区别

    对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监 ...

  3. ObjectiveC1基础代码——类和对象

    // //  main.m //  ObjectiveC1 // //  Created by scjy on 15/10/30. //  Copyright © 2015年 lizhipeng. A ...

  4. 【C语言】严格区分大小写

    C语言严格区分大小写 一.相关基础知识 二.具体内容 C语言严格区分大小写: 如: int为关键字,INT则为用户标识符,即可定义int INT;   int INt;   int Int;  cha ...

  5. uboot移植参考资料

    参考文档:移植u-boot-1.1.6到TQ2440文档.pdf 参考网页:uboot在S3C2440上移植<出自超哥(相广超)>

  6. Eclipse maven git

    http://www.blogjava.net/youxia/archive/2013/12/29/408182.html

  7. 玩玩TCPCOPY+ intercept+mysql-replay-module(未成功)

    TCPCOPY+ intercept这两个模拟流量转发倒简单. 但,想实现一个mysql-replay-module模块时,失败了.(我现在仔细想想,这个方案,在我们现在的场景里,实用性不大,但弄好点 ...

  8. java学习面向对象值static

    讲完了this这个关键字,我们继续前进,这节我们讲另外一个比较重要的东东,java当中的static,在main函数前面这个家伙都在那里一直挺着,你瞅见了么,你就不好奇么,你就不想知道他杵在那里做什么 ...

  9. Linux下Socket编程的端口问题( Bind error: Address already in use )

    Linux下Socket编程的端口问题( Bind error: Address already in use ) 在进行linux网络编程时,每次修改了源代码并再次编译运行时,常遇到下面的地使用错误 ...

  10. bzoj2789

    这种题目肯定是先把一个当做标准串根据标准串得出一个初始串是怎么排列的,然后求逆序对数就可以了但是因为有重复,我们不知道标准串中的一个数到底是由原来哪个字母交换来的但是我们可以猜,不难贪心得到对于标准串 ...