### 1、shell下没有变量类型和定义的概念。

>1. 变量直接使用不用定义

>2. 所有值都视为字符串。

>3. 在对变量取值都需要加$

>4. 行注释为 #

+ #### 在shell中,算术运算,执行加减除

例如:

var1=5

var2=2

total=`expr $var1+$var2`

##### $ 是取变量值运算符

##### `` 是命令置换符,将expr $var1+$var2执行结果赋值给total

##### expr 是做数学运算的命令

+ #### shell中,算术运算,执行乘

例如:

var1=5

var2=2

total=`expr $var1 \* $var2`

##### * 在shell中为通配符。在此用作乘法需要转义

##### \ 是转义命令符,因此 \*表示乘法。

### 2、设置PATH

PATH 是shell找寻命令的路径。如果执行的命令找不到,会报command not found错误。

修改PATH:

>PATH = $PATH:/usr/temp

### 3、shell脚本第一句应指明解释器

一般第一句为: #!/bin/bash

### 4、条件判断

if 空格 [ 空格 条件1 空格 == 空格 条件二 ] 空格;空格then

>####注意汉字指明的空格 == ; > [] 两边必须有空格

例如:

#!/bin/bash

SYSTEM=`uname -s`

if [ $SYSTEM == "Linux" ] ; then

echo "Linux System"

elif [ $SYSTEM == "FreeBSD" ] ; then

echo "FreeBSD System"

elif [ $SYSTEM == "Solaris" ] ; then

echo "Solaris System"

else

echo "Unknow System"

fi

>#### 判断符号

1、字符串判断

str1 = str2  当两个串有相同内容时为真

str1 != str2  当串str1和str2不等时为真

-n str1    当串的长度大于0时为真(串非空)

-z str1    当串的长度为0时为真(空串)

str1     当串str1为非空时为真

2、数字的判断

int1 -eq int2    两数相等为真

int1 -ne int2    两数不等为真

int1 -gt int2    int1大于int2为真

int1 -ge int2    int1大于等于int2为真

int1 -lt int2    int1小于int2为真

int1 -le int2    int1小于等于int2为真

3、文件的判断

-r file     用户可读为真

-w file     用户可写为真

-x file     用户可执行为真

-f file     文件为正规文件为真

-d file     文件为目录为真

-c file     文件为字符设备文件为真

-b file     文件为块设备文件为真

-s file     文件大小非0时为真

4、复杂逻辑判断

-a         与

-o        或

!        非

### 5、switch/case结构

#!/bin/bash

SYSTEM=`uname -s`

case $SYSTEM in

Linux)

echo "Linux System"

;;

FreeBSD)

echo "FreeBSD System"

;;

Solaris)

echo "Solaris System"

;;

*)

echo "Unknow System"

;;

esac

### 6、Shell循环

举例 1:

#!/bin/bash

echo "Use for list 1~10"

for i in `seq 1 10` ; do

echo $i

done

echo "List file in current folder:"

for file in `ls`

do

echo $file

done

举例 2:

#!/bin/bash

echo "Use while list 1~10"

min=1

max=10

while [ $min -le $max ]

do

echo $min

min=`expr $min + 1`

done

### 6、Shell参数解析

+ 参数说明:

$# 表示参数的个数

$* 表示所有的参数

$0 表示程序的名字

$1 表示第一个参数

$2 表示第二个参数

+ 参数解析

实现不同参数,执行不同命令

举例:

#!/bin/bash

while getopts "hv" opt #Parser the arguments

do

case $opt in

h)

usage ;;

v)

version ;;

?)

usage ;;

esac

done

> 函数调用不需要加括号。

>

### Shell的其他应用

#### Shell调试

打开调试 `set -x`

关闭调试 `set +x`

例如: `set -x xxx.sh`

在shell脚本中添加,可局部打开调试。

#### Bash Shell段注释

:<< EOF

注释掉的代码

EOF

#### 配置文件使用

source 或 . 命令可以让ini格式文件的引用生效。

例如:

#!/etc/bash.sh

CONF_FILE=/etc/sysconfig/network-scripts/ifcfg-eth0

source $CONF_FILE

etho $IPADDR

如上,变量IPADDR,未在shell中赋值,但却打印出了IP地址。原因是 `source $CONF_FILE`,是/etc/sysconfig/network-scripts/ifcfg-eth0文件中的IPADDR,被引用到此shell中。

一键复制

编辑

Web IDE

原始数据

按行查看

历史

bash linux .ee,Linux下Bash shell学习笔记.md相关推荐

  1. Linux与C++11多线程编程(学习笔记)

    多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...

  2. Linux内存从0到1学习笔记(4,TLB)

    一.TLB简介 Kernel初始化的时候,会在初始化内存中创建页表:而处理器读取指令和数据的时候需要首先通过MMU查表得到物理地址,然后在访问物理地址读取指令或数据.MMU查表过程汇中需要4次访问内存 ...

  3. shell学习笔记 (2)

    shell学习笔记 (2) ---china.pub.com  linux shell电子书学习笔记 第2章 使用find和xargs find pathname -options [-print - ...

  4. suse linux bash漏洞,Suse11 sp3 下Bash漏洞升级修复

    SuSE Linux Enterprise Server 11Bash 漏洞修复方案 系统:Suse-11-sp3-64 Bash:bash-4.4 1.1. Bash升级 1.1.1升级概述 大部分 ...

  5. [Bash Shell] Shell学习笔记

    1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...

  6. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  7. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

  8. Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)

    1. 启动 shell /etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息: christine:x:501:501:Christine Bresnahan:/home/ ...

  9. 【Linux】Linux Shell 学习笔记:什么是Linux?

    I Linux 简介 Linux系统简介 (biancheng.net) Linux和UNIX的关系及区别 (biancheng.net) Linux内核_百度百科 (baidu.com) [什么是 ...

最新文章

  1. MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原
  2. 腾讯云上午突发故障 称运营商光缆中断所致
  3. Nginx RTMP 功能研究
  4. 今日头条的 ByteSpider,怎么就成了小网站的“噩梦”?
  5. Android graphic: bitmap and it's principle
  6. SQL Server执行大文件SQL脚本
  7. 学生计算机如何用数字小游戏,【数学思维】小学生数学趣味游戏:你身上的计算器...
  8. mysql max connects_出现mysql max-connections问题解决解决办法
  9. python12306抢票_Python3.6实现12306火车票自动抢票,并短信和邮件通知
  10. QAP,社会网络分析假设检验之一
  11. 2020双十一商家物流迎来大考:看拙燕仓如何破局?
  12. 剑魂之刃服务器维护,《剑魂之刃》今日安卓版本更新服务器维护公告
  13. 自学软件测试1个半月上岸拿5个offer
  14. Bootstrap中一些常用的类名
  15. 二维码详解(QR Code)
  16. 如何使用京东的关键字搜索你想要的商品详情
  17. 破甲两千六 Spring Cloud 教程(三):添加Spring Cloud 的 Netflix Eureka 插件,实现服务端、客户端的发现与注册
  18. LayUI动态选项卡iframe使用
  19. Linux更改一个所有者root为只读权限的文件的权限
  20. 【花雕体验】14 行空板pinpong库测试外接传感器模块

热门文章

  1. Android.mk宏定义demo
  2. 如何利用wordpress搭建自己独立的博客(个人网站)
  3. 编译Android4.3内核源代码
  4. UE4之脚本导入fbx
  5. Webrtc之源码结构
  6. PCIE传输速率详解、Gbps和GB的区分
  7. notepad怎么运行php程序,notepad怎么运行代码
  8. kd树 python实现_kd树 寻找k近邻算法 python实现
  9. arm b bl 地址无关码_海边同居有甜有虐,又一部BL日剧来了
  10. java中map函数指针_如何用Rust编写合适的map函数?