原文地址: http://www.cnblogs.com/NickQ/p/8870423.html

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中。

Linux下Bash shell学习笔记的更多相关文章

  1. Linux下Bash入门学习笔记

    学习好shell编程是很有用的,可以使用shell脚本轻巧地完成有趣的工作. 本文地址:http://www.cnblogs.com/yhLinux/p/4047516.html 1. Bash实例, ...

  2. 【Linux】bash shell学习

    Bash Shell Linux系统的合法shell都写入/etc/shells这个文件,默认使用的shell版本称为“Bourne Again Shell(简称bash)” 用户登录时系统会分配一个 ...

  3. bash shell学习笔记(一)—— 常用命令

    一.基本的bash shell命令 1.默认bash shell 提示符是美元符号($); 2.bash手册 使用man命令来访问存储在Linux系统上的手册页面,如: bogon:~ Mac$ ma ...

  4. Linux Bash Shell学习笔记

    参数扩展: 1.被名称引用的参数称作变量2.被数字引用的参数称作位置参数3.被特定符号引用的参数具有特殊的含义和用途,被称作Bash的特殊内部变量引用. 基本参数扩展:字符$会引导参数扩展.大括号是可 ...

  5. LInux下socket编程学习笔记

    1.socket套接字: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模 ...

  6. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  7. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  8. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  9. linux下的shell和脚本

    1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/s ...

随机推荐

  1. Oracle物化视图详解

    现实工作中会有多个数据源同步到一个数据库完成数据分析的场景,这些数据可以不是实时同步的,我们一般通过定时任务抽取数据到统计分析库给应用使用. 一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数 ...

  2. 关于thrift的一些探索——thrift序列化技术

    thrift的IDL,相当于一个钥匙.而thrift传输过程,相当于从两个房间之间的传输数据. 图-1 (因为Thrift采用了C/S模型,不支持双向通信:client只能远程调用server端的RP ...

  3. Windows 如何查看本地端口被进程占用的情况?

    1.查看端口占用情况: 1.开始--运行--cmd 进入命令提示符. 2. 输入netstat -ano(或netstat -nao) ,即可看到所有进程(这里显示进程的PID)占用端口的情况. 3. ...

  4. easyui学习笔记7—在手风琴中显示表格

    在这一篇中我们看看如何在手风琴里面显示表格数据的. 1.先看看引用的资源 <link rel="stylesheet" type="text/css" h ...

  5. shell----删除文件中的^M

    在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”.有几种方法可以处理. 1.使用vi的替换功能.启动vi,进入命令模式,输入以下命令: :%s/^M$/ ...

  6. React v15.5.0更新说明 & v16.0.0更新预告

    React今日发布了15.5.0版本,同时这也将是以15开头的最后一个版本,下一次发布,我们将迎来React 16.0.0 在15.5.0这一版本中,主要有以下两处改动: 独立React.PropTy ...

  7. avl 平衡搜索二叉树的旋转图示

    avl树的平衡是通过旋转不平衡子树完成的,旋转是如何完成的?这有幅不错的图http://upload.wikimedia.org/wikipedia/en/1/15/Tree_Rotations.gi ...

  8. tmux分屏

    网上很多教程: 新手教程: tmux进入 ctrl + b 命令 % 纵向分屏 命令 方向键 切换 https://lukaszwrobel.pl/blog/tmux-tutorial-split-t ...

  9. 禁止查看网页源代码和F12

    function disableInfo() { document.onkeydown = function() { var e = window.event || arguments[0]; //屏 ...

  10. 原生JS写验证码

    1.先创建一个一个输入框用来用户输入验证码和一个span容器用来存放系统给出的验证码和一个刷新按钮还有一个登录按钮 <input type="text" class=&quo ...