zoukankan      html  css  js  c++  java
  • Shell脚本语法

    索引

    1. 第一行必须是"#!/bin/sh"

    • 它不是注释,"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在;
    • 如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell.
    • 如果脚本被编写为在Kornshell ksh中运行,而默认运行shell脚本的为C shell csh,则脚本在执行过程中很可能失败。
    • 所以建议大家就把"#!/bin/sh"当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。

    2. 注释:一行开头为 #

    3. 定义变量

    定义单变量

    p_name='kang'
    

    使用单变量

    echo  $p_name'.js'    # 输出kang.js
    echo  $p_name.js      # 输出kang.js
    cp  $p_name.js  copy.js;
    

    4. 逻辑符号

    命令1 && 命令2

    如果左边的“命令1”执行成功,那么右边的“命令2”才会被执行。

    命令1 || 命令2

    与&&相反。如果“命令1”未执行成功,那么就执行“命令2”。

    () {}

    ...

    5. 接收参数

    脚本文件“copy.sh”,其内容如下:

    m=$1
    n=$2
    echo $m-$n
    

    执行命令:“sh copy.sh 111 222”;输出 111-222

    6. 控制流:if/then/elif/else/fi

    注意"["和"]"前后的空格必须有,否则提示错误

    m="kang2"
    if [ "$m" == 'kang' ]; then
        echo 'kang'
    elif [ $m == 'kang2' ]; then
        echo 'kang2'
    else
        echo 'no'
    fi
    

    示例:判断文件夹

    if [ -d './js' ]; then
     echo 'js是文件夹'
    fi
    

    7. 循环:for/do/done

    注意:循环项是以“空格”拆分的字符串

    name="rain man's blog"
    for loop in $name; do
        echo $loop;
    done
    

    8. 格式化输出日期

    curdate="`date +%Y%m%d%H%M%S`"
    echo $curdate
    

    执行结果:20110904175817

    9. exist

    退出当前shell脚本,一般来说,返回0表示执行成功,其他值表示没有执行成功。

    exist 0    # 返回0
    exist 1    # 返回1
    

    10. 系统变量

    pwd=$PWD      # 当前目录
    user=$USER    # 当前用户
    echo $pwd
    echo $user
    

    运行脚本后输出:

    /home/rainman/test
    rainman
    

    参考文档

  • 相关阅读:
    Ext.grid.行相关
    FORM 布局
    rs.open sql,conn,1,1全接触
    arguments.callee
    Ext.window.MessageBox xtype: messagebox ; Ext.Msg Ext.MessageBox
    Ext.grid.column
    sql
    正则
    转JS
    quickFilters
  • 原文地址:https://www.cnblogs.com/rainman/p/2179313.html
Copyright © 2011-2022 走看看