linux shell 脚本详解

. Linux  shell 脚本编写基础
◆1.1 语法基本介绍
1.1.1 开头

程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行:
编译 chmod +x filename 这样才能用./filename 来运行
1.1.2 注释
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。
如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。
1.1.3 变量

在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

复制代码代码如下:


#!/bin/sh 
#对变量赋值: 
a=”hello world” 
# 现在打印变量a的内容: 
echo “A is:” 
echo $a


有时候变量名很容易与其他文字混淆,比如:

复制代码代码如下:


num=2 
echo “this is the $numnd”

这并不会打印出“this is the 2nd”,而仅仅打印”this is the “,因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量:

复制代码代码如下:


num=2 
echo “this is the ${num}nd”


这将打印: this is the 2nd
1.1.4 环境变量
export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。

这一讲就介绍到这里,下面我们会接触到具体的Linux shell脚本基础的实质部分。

 

 

必须要要知道几个变量,

复制代码代码如下:


   *    $0 :即命令本身,相当于c/c++中的argv[0]
    *    $1 :第一个参数.
    *    $2, $3, $4 … :第2、3、4个参数,依次类推。
    *    $#  参数的个数,不包括命令本身
    *    $@ :参数本身的列表,也不包括命令本身
    *    $* :和$@相同,但”$*” 和 “$@”(加引号)并不同,”$*”将所有的参数解释成一个字符串,而”$@”是一个参数数组。


手工处理方式能满足多数的简单需求,配合shift使用也能构造出强大的功能,但处理复杂选项时建议用下面的两种方法。
例子,(getargs.sh):

复制代码代码如下:


#!/bin/bash
if [ $# -lt 1 ]; then
    echo “error.. need args”
    exit 1
fi
echo “commond is $0”
echo “args are:”
for arg in “$@”
do
    echo $arg
done


运行命令:

复制代码代码如下:


./getargs.sh 11 22 cc
commond is ./getargs.sh
args are:
11
22
cc

 

 ”>, >>, 2>, 2>> :前面讲过重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和 2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>。

 linux shell 脚本详解

[ ] ”:中括号,中间为字符组合,代表中间字符中的任意一个

 linux shell 脚本详解

&& 与 ||

在上面刚刚提到了分号,用于多条命令间的分隔符。另外还有两个可以用于多条命令中间的特殊符号,那就是 “&&”和”||”。下面笔者把这几种情况全列出:

1) command1 ; command2

2) command1 && command2

3) command1 || command2

使用”;”时,不管command1是否执行成功都会执行command2; 使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。

linux shell 脚本详解 

 

 

 

 

原创文章,作者:linux-qiao,如若转载,请注明出处:http://www.178linux.com/83818

(0)
linux-qiaolinux-qiao
上一篇 2017-08-05 15:11
下一篇 2017-08-05 15:43

相关推荐

  • SSH端口转发

      SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他TCP 端口的网络数据通过SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为SSH 为其他TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些TCP 应用均能够…

    2017-09-10
  • Linux基本命令

    前言 今天学习了Linux下的一些基本命令,在此归纳总结一下这些命令的基本用法。 Linux命令帮助的获取     在拿到一个命令后不知道其用法,我们可以通过命令帮助来查看它的用法,但linux下内部命令和外部命令获取帮助的方法是有差别的。     内部命令:help command &n…

    Linux干货 2016-10-14
  • 关于文本处理工具之SED

                                                      &nbsp…

    学员作品 2016-08-10
  • 深入Php底层,用c为php编写拓展

    1.前言              随着lamp/lnmp架构的流行,Php语言越来越得到广泛的使用。php语言在表现层有着非常优异的表现,部署方便,开发迅速。但Php语言也有着天生短板以及局限性—-对多线程以及多进程的支持不甚如意,以及…

    Linux干货 2016-10-29
  • 网络25期第一周作业

    一、计算机硬件的组成及功能 1、控制器       控制器负责从存储器中取出指令,并对指令进行译码。控制器主要是由指令寄存器、译码器程序计数器、操作控制器等组成。 2、运算器      运算器又称算数逻辑单元,是计算机进行算术计算和逻辑计算的部件。 3、存储器 &nbs…

    Linux干货 2016-12-06
  • Linux 发展史

    摘要:     Linux是一款基于Unix的服务端操作系统,目前已广泛应用于国内外的服务器端操作系统领域,其开源性是其获得及其快速的发展,目前至少已有数百种发行版本。 本文主要讲述了linux的系统简介、发展历程和Linux的发行版;     1、Linux的哲学思想:    &nbsp…

    Linux干货 2016-10-19