目录

一、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. SSRF漏洞总结

    SSRF漏洞:(服务端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.(正是因为它是由服务端发起的,所以它能够请求到与它相连而 ...

  2. ReportView动态加载带参数的RDCL文件及子报表

    本文来自Torres.Wu发表在博客园的博客,转载请标明出处. 同上一篇差不多,这次咱们加载带有子报表的RDCl文件.首先还是创建一个form程序,在form2窗体中添加一个ReporView控件,l ...

  3. openstack-ocata-身份验证2

    Identity service 一.身份服务概述 OpenStack身份管理服务提供一个单点集成身份验证.授权和目录服务. 身份服务通常是第一个服务用户与之交互.一旦身份验证,最终用户可以使用自己的 ...

  4. Android开发——fragment中数据传递与刷新UI(更改控件)

    数据传递: 1.通过数据库进行数据的传递 如在fragment中将数据保存在数据库中,之后其他的fragment或者activity直接读取数据库中的数据,数据库使用还算简单,这里就不多说,建议使用l ...

  5. R语言︱异常值检验、离群点分析、异常值处理

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...

  6. Linux显示登入系统的帐号名称和总人数

    Linux显示登入系统的帐号名称和总人数 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ who -q youhaidong youhaidong # 用户数= ...

  7. [RPC Fault faultString="Cannot invoke method 'saveOrUpdate'." faultCode="Server.ResourceUnavailable"

    1.错误描述 [RPC Fault faultString="Cannot invoke method 'saveOrUpdate'." faultCode="Serve ...

  8. linux 安装沙盒virtualenv 、virtualenvwrapper

    1.沙盒安装命令: 最新版本:sudo easy_install virtualenv或者sudo apt-get install virtualenv 指定版本:pip install virtua ...

  9. 异常-----freemarker.core.ParseException: Unexpected end of file reached

    freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Unexpected end of file reached. at freemarker ...

  10. ArcGIS API for JavaScript 4.4 版本加载谷歌地图

    ArcGIS API for JavaScript 4.X 版本升级后,API发生了很大的变化. 其中就支持了WebEarth展示,主要是通过 esri/views/SceneView 实现的. 在新 ...