文档章节

031-shell基础

侠客行之石头
 侠客行之石头
发布于 2017/08/25 10:23
字数 643
阅读 55
收藏 1
点赞 1
评论 0

第一章      Shell 脚本

1.1定义

shell 是什么?shell是沟通内核和命令行的润滑剂

属于不需要解释的语言,即是编译型语言

那么python 和perl 都是解释型语言,执行效率更低

 

1.2  简单脚本

vim test.sh

#!/bin/bash  ##调用bash,用来解释一下这个脚本用什么解释器来解释

echo "Hello World !!"

!wq  ##强制退出菜单

 

1.3 变量在脚本中的运用

vim test.sh

#!/bin/bash

your_name="Carlton"

echo ${your_name}

{}的意思就是用来表示变量

 

1.4 特殊变量

$0 当前脚本的文件名

$n 传递给脚本或函数的参数。n 表示第几个参数

$# 传递给脚本或函数的参数个数

$* 传递给脚本或函数的所有参数

$$ 当前shell 进程ID,对于shell脚本,就是这些脚本所在进程的ID

$? 上个命令退出时候的状态

 

1.5 运算符号

a=10

b=20

carlton=$[$a + $b]

echo "a+b: $val"



if [ $a=$b ];

then  

echo "a is equal to b"

fi

 

if [ $a -lt $b ];

then

   echo "$a -lt $b: a is less than b"

else

   echo "$a -lt $b: b is not less than b"

fi

 



[ !false ]

[ $a -lt 20 -o $b -gt 100 ]

[ $a -lt 20 -a $b -gt 100 ]  均返回true

 

1.6 字符串运算符列表


 

if [ -z $a ]

then

  echo "-z $a : string length is zero"

else

  echo "-z $a : string length is not zero"

fi

z和n 是对立面

 

1.7 文件运算符号

 

第二章      if 条件判断

if 语句通过关系运算来判断表达式胡真假

if…fi

if..else..fi

if…elif…elif…fi

if…else…fi语句用于if两种结果分别执行什么样的命令。

写法:

if [ 条件 ]

 then

执行语句    如果if的条件为真

else

执行语句    如果if的条件为假

fi

 

if…elif…elif…if语句用于判断多个条件。

写法:

if [ 条件 ]

then

执行语句

elif  [ 条件 ]

then

执行语句

else

执行语句

fi

 

2.1 case 例子

case用于判断一个值的多种情况,不同的情况执行不同的命令

case 值 in

 值1

执行语句

 ;;

值2

;;

…

 esac

echo 'Input a number between 1 to 4'

echo 'Your number is:\c'

read aNum

case $aNum in

    1)  echo 'You select 1'

    ;;

    2)  echo 'You select 2'

    ;;

    3)  echo 'You select 3'

    ;;

    4)  echo 'You select 4'

    ;;

    *)  echo 'You do not select a number between 1 to 4'

    ;;

esac

 

2.2 while 循环语句

while循环用于不断执行一系列命令,也用于从文件中读取数据。

写法

while  命令

do

   执行语句

done

命令执行完毕,控制返回循环顶部,从头开始只到条件为假。

test=0

while [ $test -lt 5 ]

do

 test=$[ $test + 1 ]

 echo $test

done

 

 

© 著作权归作者所有

共有 人打赏支持
侠客行之石头
粉丝 8
博文 167
码字总数 52781
作品 0
深圳
运维
S5PV210开发 -- I2C 你知道多少?(二)

上一篇主要是介绍了下芯片手册 I2C 部分,都应该看些什么,以及上拉电阻取值和传输速率模式选择。 这一篇该来点程序了,首先以 AT24C02 (EEPROM)为基础介绍一下I2C设备驱动编程,然后以 MT...

qq_29350001 ⋅ 2017/12/12 ⋅ 0

[原创]Bash中的test,[,[[ 有什么区别

在Bash中,test, [, [[ 都可以用来对一个布尔表达式进行求值,比如: 一般情况下,三者的效果是一样的,但细节上存在差别 在大多数的Shell中, test和[ 是等价的(除了个别比较古老的Bourne Shel...

mj4738 ⋅ 2011/11/25 ⋅ 0

shell脚本监控(ping)主机是否存活

#!/bin/bash #http://wangjiatong.blog.51cto.com/ #create2016-11-22 ping_success(){ if ping -c 1 $IP >/dev/null; then echo -e "033[032m$IP ping issuccessful!!033[0m" continue fi }......

飞侠119 ⋅ 2016/11/22 ⋅ 0

ffmpeg接收RTSP摄像头为什么Size=0kb

命令如下: ffmpeg -i "rtsp://admin:admin@192.168.0.27/cam/realmonitor?channel=1&subtype=0" -c copy -f flv rtmp://192.168.0.51:1935/live/test 输出如下: libavutil 52. 31.100 / 5......

linzian888 ⋅ 2013/05/17 ⋅ 1

Ant Design 2.8.2 发布,阿里前端设计语言&前端框架

Ant Design 2.8.2 发布了,Ant Design 是蚂蚁金服开发和正在使用的一套企业级的前端设计语言和基于 React 的前端框架实现。本次更新如下: 发布了新的 设计基础文档。 修复使用 Modal.confir...

局长 ⋅ 2017/03/20 ⋅ 8

Java操作AD Ldap错误备忘

javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000052D: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0] 异常原因:密码不符合密码策略。 解决......

黎明明 ⋅ 2012/09/27 ⋅ 3

苹果为旧 OS X 系统发布 Safari 和系统安全更新

苹果还为 OS X 10.9.5, 10.8.5 发布了系统安全更新 Security Update 2015-001, 以及 Safari7.1.3, Safari 6.2.3, 修复了多个系统安全缺陷, 例如蓝牙, CoreGraphics, 英特尔集显驱动, Kernel内...

oschina ⋅ 2015/01/29 ⋅ 2

kali之flash挂马

root@localhost:~# msfconsol msf > show #寻求帮助 msf > use windows/shell/bindtcp# msf payload(bindtcp) > set RHOST 192.168.48.100 RHOST => 192.168.48.100 msf payload(bindtcp) > ......

周小玉 ⋅ 2017/07/04 ⋅ 0

S5PV210开发 -- I2C 你知道多少?(一)

网上的资料很多,但是大多讲解的不太全面。如果只是单纯的讲一下I2C总线协议,那就没必要再写了。因为MPU6050 开发部分已经将 I2C 通信协议,讲的很清楚了。但是I2C设备驱动、上拉电阻取值、...

qq_29350001 ⋅ 2017/12/07 ⋅ 0

关于cassandra权限问题

INFO [main] 2012-04-17 11:34:28,937 CLibrary.java (line 61) JNA not found. Native methods will be disabled. INFO [main] 2012-04-17 11:34:28,937 DatabaseDescriptor.java (line 116......

zhoujy ⋅ 2012/04/17 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 31分钟前 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部