LINUX之shell编程简明语法说明

转载自:http://blog.chunshiban.com/2013/03/13/linux%E4%B9%8Bshell%E7%BC%96%E7%A8%8B%E7%AE%80%E6%98%8E%E8%AF%AD%E6%B3%95%E8%AF%B4%E6%98%8E/

【特殊字符】
空格,空行,TAB都将被忽略,当一行内容太长必须分到两行时用/连接同一行的内容,#用来注释
""内的变量名将自动被替换成变量内容,''中的变量名不被替换,``中的内容将首先被执行,
【执行】
更改该文档属性 chmod 775 scripts.file,然后执行该文档  | 直接以sh scripts.file来执行该文档
【变量的声明】
declare
-a|-f|-i|-r|-x从左至右依次为s数组,函数,整数,只读,透过环境变量输出变量
【变量的初始化】
等号两边不允许有空格,未初始化的变量为null
【数组】
arr=(ab cd ef gf)
$arr默认访问数组第一个元素 ${arr[2]}通过下标访问${arr[@]}|${arr[*]}获取整个数组 ${#arr[@]}获取数组长度 ${#arr[1]}获取第一个元素长度 ${arr[@]:1:2}取1,2个${arr[@]:2}取第2个及后边的${arr[@]::2}取到第二个
push: array=(" ${arr[@]}" $new-element) pop: array=(${arr[@]:0:$((${#arr[@]}-1))}) shift:array=(${arr[@]:1}) unshift:array=($new_element "${arr[@]}")
【函数】
function 函数名()
{
 code
}

【基本的输入输出】
read 读入数据 echo 输出数据 print
【程序入口参数】
$0表示本身文件名和PHP_SELF相同 $1传入的第一个参数的引用
【逻辑判断】
 1.文档与目录
    -f         档案是否存在
    -d         目录是否存在
    -b         是否为一个[block档案]
    -c         是否为一个[character档案]
    -S         是否为一个socket标签档案
    -L         是否为一个[symbolic link的档案]
    -e         某个东西是否存在
2.文档属性
    -r          是否为可读的属性
    -w        是否为可入的属性
    -x        是否为可执行文档
    -s        是否为非空文档
    -u        是否具有SUID属性
    -g        是否具有SGID属性
    -k        是否具有[sticky bit]的属性
3.文档比较
    -nt         第一个文档比第二个文档新
    -ot         第一个文档比第二个文档旧
    -ef         两个文档为同一个文档(link 之类的文档)
4.程序的逻辑卷标
    -G         侦测是否由GID所执行的程序所拥有
    -O         侦测是否由UID所执行的程序所拥有
    -P         是否为程序间传送信息的name pipe或者FIFO             
【运算符】
1.比较运算符
    =|-eq 等于运算符   !=|-ne不等于运算符 <|-lt小于 >|-gt大于 -le小于等于 -ge大于等于
2.逻辑运算符
   &&与运算  ||或运算 -a双方都成立 -o有一方车成立
3.字符串
    -z空字符串  -n非空字符串
【流程控制】
 1.条件判断
     if...then...fi,case...esac
     在[]当中,只能有一个判别式,不同于其他编程语言(⊙o⊙)哦 
     可以用&& 或者||来组织判别式
     每一个独立的组件之间都要用' '空格隔开,非常重要
     case 变量名 in
       种类方式一)
             程序代码
             ;;
    种类方式二)
        程序代码
         ;;
    种类方式三
       程序代码
         ;;
        *)
           echo "给出提示如同switch的default"
           exit 1 
2.循环执行
     for ((条件一;条件二;条件三)) do ... done
    for variable in variable1 variable2 ....  do ... done ...
    while [condition] || [condition2] ... do ... done ...
        until [condition] && [condition2] ... do ... done ...
    常出现的错误:不支持自加自加++ 和 连写的加减+=/-=   
【调试】
    sh -n|-v|-x 从左至右依次是不执行检测语法错误|在执行之前,先将源代码显示在屏幕上|将使用到的源代码显示到屏幕上

【参数问题】

$#参数个数 $0文件名 $1第一个参数

 【段注释问题】

 a)

#空指令方式+本地文档

‘:’空命令 

<<haha

haha

haha为本地文件名,之间的内容见被写入到本地haha文件中,原目的是连续执行,而不必重建另一文件,当接在':'时,则不再执行之间的动作。

:<<mark  
        要注释掉的代码段
 mark

<<'haha' | <</haha

     这其中的变量自动替换被关闭

<<haha

若注释内容中有反引号则在文件名上添加单引号,让前后两个文件名的单引号成对即可。

或者

:||{}当里边有括号时报错,所以避免里边有括号的情况。

推荐注释方法

                  : :||:<</COMMENTS
                  ....注释内容
                   COMMENTS

#条件判断

#写成函数

function name()

{

   code

}

++++++++++++一段有意思的代码++++++++++++++++++

:(){:|:&}:

递归调用,自己理解吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值