参考: http://blog.csdn.net/kaizi318/article/details/9343551

开头
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

默认变量
        $# : 传入脚本的命令行参数个数
        $* : 所有命令行参数值,在各个参数值之间留有空格
        $0 : 命令本身(shell文件名)
        $1 : 第一个命令行参数
        $2 : 第二个命令行参数

$@     表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
        $?     上一条命令的Exit Status
        $$     当前Shell的进程号

$!     シェルが最後に実行したバックグラウンドプロセスのPID
        $-     setコマンドを使って設定したフラグの一覧

局部变量
在变量首次被赋值时加上local 关键字可以声明一个局部变量,例s3:
        #!/bin/bash
        hello="var1"
        echo $hello

function func1 {

local hello ="var2"
                echo $hello
        }
        func1
        echo $hello

要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )
我们可以用花括号来告诉shell要打印的是num变量:
    num=2
    echo "this is the ${num}nd"

引号

引号(单引号和双引号)可以防止通配符*的扩展:
其中单引号更严格一些,它可以防止任何变量扩展;而双引号可以防止通配符扩展但允许变量扩展:
此外还有一种防止这种扩展的方法,即使用转义字符——反斜杆:\:

比较
        比较操作        整数操作        字符串操作
        相同                    -eq                       =
        不同                    -ne                      !=
        大于                    -gt                        >
        小于                    -lt                         <
        大于或等于        -ge
        小于或等于        -le
        为空                    -z

不为空                -n

<例>
        比较整数a和b是否相等:if [ $a = $b ] (也可用eq)
        判断整数a是否大于整数b:if [ $a -gt $b ]
        比较字符串a和b是否相等:if [ $a = $b ]
        判断字符串a是否为空: if [ -z $a ]
        判断整数变量a是否大于b:if [ $a -gt $b ]

字符串

文字列         文字列の長さが0より大きければ真
-n 文字列     文字列の長さが0より大きければ真
! 文字列       文字列の長さが0であれば真
-z 文字列     文字列の長さが0であれば真
文字列1 = 文字列2     2つの文字列が等しければ真
文字列1 != 文字列2     2つの文字列が等しくなければ真


文件判断

        -e 文件已经存在
        -f 文件是普通文件
        -s 文件大小不为零
        -d 文件是一个目录
        -r 文件对当前用户可以读取
        -w 文件对当前用户可以写入

-x 文件对当前用户可以执行

       -L 文件名     シンボリックリンクなら真
       文件1 -nt 文件2     ファイル1がファイル2より新しければ真
       文件1 -ot 文件2     ファイル1がファイル2より古ければ

运算

シェルスクリプトで数値の演算を行いたい場合は、「expr」コマンドを使用します。「5+3」は「変数=`expr 5 + 3`」と書きます。

算術演算子     意味
a + b              aとbの和
a - b               aとbの差
a \* b              aとbの積
a / b               aとbの商
a % b             aとbの剰余

如果想要运行它,需要使用“sh *.sh"这样的命令。但是如果需要通过sh文件修改环境变量之类的,则需要使用“source *.sh”这样的命令。

流程控制
if
“if” 表达式 如果条件为真则执行then后面的部分:
if …. then
….
elif …. then
….
else
….
fi

case 语句
case表达式可以用来匹配一个给定的字符串,而不是数字(可别和C语言里的switch...case混淆)。
case ... in
   ...) do something here
esac

select 语句
select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:
select var in ...  do
 break;
done
.... now $var can be used ....

while循环
while ... do
   ....
done

for 循环
for循环会查看一个字符串列表(字符串用空格分隔),并将其赋给一个变量:
for var in .... do
   ....
done

常用参数

格式:export

格式:export -p

打印当前导出的环境变量。

格式:export VAR

导出变量VAR。

格式:export VAR=VALUE

设置环境变量,并导出。

格式:export -n VAR

取消导出变量VAR。

格式:unset VAR

删除变量VAR。

shell_基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. 浅谈对ECharts的使用

    上个月的项目,其中有一个模块用的是ECharts来实现的,分别用了折线图,环形图,还有漏斗图,这几个都算比较常见的了,尤其是折线图,环形图,用的最多的就是它们了.之前也没怎么接触过ECharts,实际 ...

  2. 腾讯优测-优社区干货精选 | android开发在路上:少去踩坑,多走捷径(下)

    文/腾讯公司 陈江峰 优测小优有话说: android开发的坑自然是不少,不想掉坑快来优测优社区~ 6.Android APP开发中其它需要提醒的问题 android4.4在UI线程无法进行网络操作. ...

  3. UVa 439骑士的移动(BFS)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. jQuery-2.1.4.min.js:4 Uncaught TypeError: Illegal invocation

    jQuery-2.1.4.min.js:4 Uncaught TypeError: Illegal invocation 此错误与crsf有关

  5. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  6. MQTT协议的简单介绍和服务器的安装

    最近公司做的项目中有用到消息推送,经过多方面的筛选之后确定了使用MQTT协议,相对于XMPP,MQTT更加轻量级,并且占用用户很少的带宽. MQTT是IBM推出的一种针对移动终端设备的基于TCP/IP ...

  7. python编码-1

    help帮助系统,一个好的方法是直接看自带的帮助,尽量不用baidu help()是进入交互式帮助界面 quit是退出交互式帮助界面 [root@kvm1 python]# python Python ...

  8. 禁用sqlserver的锁升级

    锁升级 SQLSERVER.DB2中的锁是内存里面实现的,这就有个资源消耗问题,当锁的数量达到一个阀值或内存有压力时,就会引发锁升级.实际的情况是从row lock直接升级到table lock,而不 ...

  9. DataTable/Array Linq查询,groupby

    DataTable Linq查询 1.查询DataRow IEnumerable<DataRow> q1 = from r in dt.AsEnumerable() == select r ...

  10. python---sys

    简介 sys模块用于提供对python解释器的相关操作 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules 返回系统导入的模块字段,key是模块名,value是模块 ...