目录

一、shell脚本的基本使用

1、语言规范

2、变量

3、重定向(>,>>)

二、运算符和常用判断

1、比较运算符

2、逻辑运算符

3、常用判断

三、程序结构

1、分支(if语句)

2、循环

四、函数

shell的本质是一段应用程序,它使得用户和操作系统之间可以交互,是用户和操作系统的中介。

一、shell脚本的基本使用

1、语言规范

(1)文件以.sh结尾;

(2)文件头为:#!/bin/bash (表示使用的是bash shell);

(3)以#开头为注释;

(4)输出: echo "输出内容";

(5)读取:read -p "自定义读取提示" name   (name为读取内容设置的变量名,也可设置多个变量名,以空格分隔,在读取内容时也会以空格分隔内容并分配到相应的变量名)

2、变量

(1)变量的创建级赋值

变量名=变量值

变量名不用声明类型,由字母、数字和下划线组成,但不能以数字开头;默认的大写变量名表示系统变量,小写表示普通变量;

变量值可以为字符、数字和命令,当变量值为命令时需用反单引号(即esc下边的键)包围起来;

例:w=1`ls -l`

(2)变量值的输出($)

需在变量前加上$符号,当使用echo加单引号时输出的只是纯文本,而不会将变量的值提取出来,想要得到变量的值,只能使用双引号将变量包围;

显示所有用户自定的变量用命令:set

显示所有的系统变量用命令:env

(3)从程序外部给程序传递参数

可在程序内部加上$1,表示从外部传进程序的第一个参数;同理$2表示第二个参数,外部的多个参数之间以空格分隔。

例:给程序a.sh传入ab,22两个参数,使用命令:a.sh ab 22

$0表示程序自身,$#表示所有输入参数的个数,$@表示所有的参数。

如果不是很明了可参考python中的sys.argv,机理基本一样 http://www.cnblogs.com/aland-1415/p/6613449.html

3、重定向(>,>>)

即通过命令将结果输入到文件中

例:ls -l >name.txt

如果文件不存在将会创建文件,如果文件存在,使用“>”时将会对文件进行覆盖重写,使用“>>”将会在文件的末尾进行追加写入。

也可以在>或>>前加上1或2,注意不要与>,>>之间有空格,其中1表示正确的命令,2表示错误的命令。

二、运算符和常用判断

1、比较运算符

等于:==

不等于:!=

大于:>或-gt

小于:<或-lt

大于等于:>=或-ge

小于等于:<=或-le

在使用(( ))中的条件中只能使用>等符号而不能使用-gt,在shell中(( ))和[]在一定程度上是等价的。

2、逻辑运算符

逻辑与:-a

逻辑或:-o

逻辑非:!

3、常用判断

-r 文件名:文件是否存在且可读

-w 文件名:文件是否存在且可写

-x 文件名:文件是否存在且可执行

-f 文件名:判断文件是否存在且是普通文件

-d 文件名:文件是否存在且是目录

-e 文件名:文件是否存在

-z 变量:判断字符串长度是否等于0

-n 变量:字符串长度是否不等于0

在需加[]的条件判断中,如果在-r等前边加上test则不用加[];

三、程序结构

1、分支(if语句)

(1)基本格式:

if [ 条件 ]

then

语句1

else

语句2

fi

注意:每个[ ] 左右两端都需要有空格,条件语句中如果包含变量则需要用双引号包围。

then也可以写在条件之后,不过要在条件之后加上分号。

(2)多个条件连接格式:

if [ condition1 ] ;then

sentence1

elif [ condition2 ] ;then

sentence2

elif [ condition3 ] ;then

sentence3

else

sentence4

fi

(3)case选择

使用格式:

case $变量名 in

"值1")

语句1;;

"值2")

语句2;;

...

*)

语句n

esac

其中;;表示语句结束,*)表示上边所有结果都不符合的最后选择;

值也可以用区间,但最多只能用0-9的数字。

2、循环

(1)while循环

格式

while [ 条件 ]

do

语句

done

常用循环变量变化写法:

((i++))

((i+=1)

let i=i+1

i=$(($i+1))

i=$ [ $i+1 ]

常用运算迭代写法:

((sum=$sum+$i))

sum=$[$sum+$i]

sum=$(($sum+$i))

(2)for 循环

for 迭代子

do

语句

done

for循环常用迭代子的写法:

((i=1;i<=10;i++))

i in 1 2 3 4 5 6

i in `seq 1  2  15`  #1和15表示起始点,2表示步长

四、函数

函数构造

函数名(){

内容

}

函数调用直接用函数名即可。

Linux shell 基础的更多相关文章

  1. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

  2. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  3. linux shell 基础 使用日志与心得

    linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...

  4. Linux Shell 基础知识(一)

    1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 ​ GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...

  5. Linux shell基础

    shell是核心程序kernel之外的指令解析器,是一个程序,同事是一种命令语言和程序设计语言 --shell是命令解析器,用户输入命令,它去解析. shell类型 ash,bash,ksh,csh, ...

  6. linux shell基础语法

    1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码 ...

  7. Linux Shell基础 环境变量配置文件

    source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...

  8. Linux Shell基础 位置参数变量、预定义变量

    位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...

  9. Linux Shell基础 环境变量

    环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...

  10. Linux Shell基础 Shell基本知识

    概述 在 Linux 的脚本中,只要是基于 Bash语法写的Shell脚本第一行必须是"#!/bin/bash",用来声明此文件是一个脚本. 运行方式 Shell 脚本的运行主要有 ...

随机推荐

  1. win10 , JAVA安装 环境搭建

    一.关于下载地址及方式: 1.百度搜索JDK,进入下载官网,具体网址如下: click me!!! 2.根据你电脑的不同系统选择对应的下载,当然首先你要点击Accept License Agreeme ...

  2. web前端开发工程师工资多少

      做web前端开发工程师工资高不高?下面千锋小编为大家分析一下:作为目前互联网行业中的主流技术,Web前端一直是占有重要的地位.尤其是近年来HTML5技术的突飞猛进,使Web前端技术有了更好的发展. ...

  3. 快速了解Druid——实时大数据分析软件

    Druid 是什么 Druid 单词来源于西方古罗马的神话人物,中文常常翻译成德鲁伊.  本问介绍的Druid 是一个分布式的支持实时分析的数据存储系统(Data Store).美国广告技术公司Met ...

  4. 4.1 PCIe总线的基础知识

    与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端.PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通 ...

  5. 使用wordpress搭建独立域名的个人博客或网站

    最近抽空闲时间搭建了一个独立域名的个人博客站点,基本过程如下: 一.准备工作: 1.准备一个独立的域名,我是从万网中注册的cn结束的域名:tuzongxun.cn,价格29元,根据个人选择,也有更高更 ...

  6. 初次接触:DirectDraw

    第六章 初次接触:DirectDraw 本章,你将初次接触DirectX中最重要的组件:DirectDraw.DirectDraw可能是DirectX中最强大的技术,因为其贯穿着2D图形绘制同时其帧缓 ...

  7. 基于LVDS/M-LVDS的数据通信

    现在有两种方案:一种基于 M-LVDS (基于总线的多节点通信) ,有其 特定的电气要求:另外一种是基于 LVDS 的点到点通信,具体说明如 下: 基于 M-LVDS 的总线通信: 基于 M-LVDS ...

  8. Srtuts2实现登录界面(不连接数据库)报错(一)

    二月 28, 2014 11:32:02 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...

  9. 小实验3:实现haproxy的增、删、查

    # Author:Alano # -*- conding:utf-8 -*- # 这里有一个问题:为什么手动删除了haproxy_new中的内容,但是执行添加命令的时候依然显示数据已经存在? f = ...

  10. java中outputStream与inputStream的相互转换

    package com.boco.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; im ...