六、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. MySql数据库3【优化4】连接设置的优化

    1.wait_timeout / interactive_timeout  连接超时 服务器关闭连接之前等待活动的秒数.MySQL所支持的最大连接数是有限的,因为每个连接的建立都会消耗内存,因此我们希 ...

  2. 为什么使用"use strict"可以节约你的时间

    转: http://ourjs.com/detail/52f572bf4534c0d806000024 "use strict"是JavaScript中一个非常好的特性,而且非常容 ...

  3. HashMap在Android和Java中的不同实现

    起因 今天在项目中遇到一个很"奇葩"的问题.情况大致是这样的:Android终端和服务器(Spring),完全相同的字符串键值对放入HashMap中竟然顺序不一样,这直接导致了服务 ...

  4. 使用ToUpperInvariant避免使用ToUpper

    ToUpperInvariant使用不依赖于区域性进行转换,而ToUpper则使用了当前线程的CultureInfo,进行转换,所以性能会有所影响,以下为测试: [Test] public void ...

  5. MySQL ubuntu启动

    service mysql start 启动 service mysql restart 重启 service mysql stop 停止 mysql -uroot -ppassword 登入mysq ...

  6. WIN版的Jenkins Master加入LINUX的SLAVE节点,并作C++程序的集成交付

    这次深撸了一下JENKINS的配置,不敢说完全通了. 但对于整个体系,有了更新认识. 将LINUX作为SLAVE节点加入WIN的JENKINS里,网上有很多教程,依作即可. 在将相关任务分配给这个节点 ...

  7. Qt Style Sheets Examples(官方例子目录,很全)

    Contents Style Sheet Usage Customizing the Foreground and Background Colors Customizing Using Dynami ...

  8. WM_SIZE和WM_MOVE的函数体内容为什么不一样?

    搞不懂,要想一想- procedure TWinControl.WMSize(var Message: TWMSize); begin UpdateBounds; // 类函数 inherited; ...

  9. .net ref关键字在引用类型上的使用

    只接上干货. namespace ConsoleApplication1 { class Person { public string UserName { get; set; } } class P ...

  10. 3A. Shortest path of the king

    给你一个的棋盘, 问:从一个坐标到达另一个坐标需要多少步? 每次移动可以是八个方向.   #include <iostream> #include <cmath> #inclu ...