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
下一篇 2017-08-05

相关推荐

  • 权限管理

    linux文件权限:     在linux系统中,每个文件或目录都包含有相应的权限,这些权限决定了哪些用户或组能够对此文件做哪些操作,如读取、删除、写入等操作 文件权限分为三类:r,w,x     应用于文件:      &nbs…

    Linux干货 2016-08-07
  • 第二周作业

    第二周博客作业 1. Linux上常用的文件管理命令及使用 (1) CP命令:复制文件或文件夹语法格式        cp [OPTION]… [-T] SOURCE DEST     …

    Linux干货 2016-12-16
  • 磁盘管理及文件系统

    磁盘管理 本文将从以下几方面介绍 第一部分:磁盘管理 1、浅识Linux磁盘 2、常见命令 第二部分:文件系统管理 1、文件系统的创建 2、文件系统挂载 3、自动挂载配置文件 第一部分:磁盘管理 浅识Linux磁盘 对于Linux来说我们知道一切皆文件,同样在Linux中硬件设备在系统上会映射成相对应的文件,我们就像是在Windows看文件一样只要打开对应的…

    Linux干货 2017-08-15
  • 第四周练习

    1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。         # cp -r /etc/skel /home/tuser1      &nb…

    Linux干货 2016-11-18
  • 实时文件查找工具–find

    find [option] …[查找路径] [查找条件] [处理动作] 起始路径:指定具体的目标路径,默认为当前目录 查找条件:指定查找标准,可以根据文件名,权限,文件大小等标准进行。默认为指定路径下的所有文件 处理动作:对符合条件的文件做什么操作 1 查找条件: (1)根据文件名查找:  -name “文件名称” 支持使用glob -iname…

    Linux干货 2017-07-02
  • Linux基础之计算机的组成及其功能

    1、描述计算机的组成及其功能: 答:计算机由 1.1、CPU(运算器、控制器)进行逻辑运算跟控制运算,寄存器、缓存 1.2、输入单元(键盘、鼠标、手写板等)、输出单元(屏幕、打印机) 1.3、存储器(内存、硬盘) 2、按系列罗列linux的发行版,并描述不同发行版之间的联系与区别。 答:debian(ubuntu、mint、knopix)、slackware…

    2017-09-11