美文网首页
shell 语法整理

shell 语法整理

作者: DayDayUpppppp | 来源:发表于2019-01-31 19:40 被阅读0次
    shell的基本语法
    1. 定义变量的时候,不能加空格
    a=100 # 不能加空格
    
    1. 条件判断必须要加空格
    #判断等于
    if [ $a1 = $b1 ]   #必须加上空格
    then
       echo "eq"
    else
       echo "not eq"
    fi
    
    1. 其他的语法:
      https://github.com/zhaozhengcoder/CoderNoteBook/blob/master/note/bash%26shell%E7%BC%96%E7%A8%8B.md

    • 简单的shell操作
    # 这基本上是变量的替换
    path="/var/www"
    cd $path
    cp -r $src_code_path $build_name
    
    • shell操作数据库
    # 使用shell再数据库上面创建database
    src_db_user=root
    build_db_name=test
    
    mysql -u $src_db_user << EOF 2>/dev/null
    CREATE DATABASE $build_db_name
    EOF
    if [ $? -eq 0 ]  
    then 
        echo "created DB" 
    else 
        echo "DB already exists, sh exit"
        exit 1;
    fi
    

    Shell中通常将 EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。 可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。

    回顾一下< <的用法。当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。

    参考:https://blog.csdn.net/wyl9527/article/details/72655277

    • shell结合sed命令
    src_db_host=10.12.235.102
    build_db_host=10.12.235.102
    # sed 替换到匹配到的内容
    sed -i "s/host=${src_db_host}/user=${build_db_host}/g" file
    
    # sed 替换到匹配到这一行
    sed -i "/${src_db_host} /c ${build_db_host}"  file
    
    • shell拿到命令执行的结果
    # 打印一个目录下面所有的php文件
    for file in `ls | grep .php`
    do 
       echo $file
    done
    
    • shell中常见到的
    0:表示键盘输入(stdin)
    1:表示标准输出(stdout),系统默认是1 
    2:表示错误输出(stderr)
    
    1>/dev/null:表示标准输出重定向到空设备文件。
    也就是不输出任何信息到终端,不显示任何信息。
    
    2>&1:表示标准错误输出重定向等同于标准输出。
    因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
    
    • shell 结合ini文件
      example.ini:

      DBNAME=test
      DBUSER=scott
      DBPASSWORD=tiger
      

      example.sh

      #!/bin/bash
      #Including .ini file
      . example.ini
      echo "${DBNAME}   ${DBUSER}  ${DBPASSWORD}"
      
    • shell的符号

    $# 是传给脚本的参数个数
    $0 是脚本本身的名字
    $1 是传递给该shell脚本的第一个参数
    $2 是传递给该shell脚本的第二个参数
    $@ 是传给脚本的所有参数的列表
    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 是脚本运行的当前进程ID号
    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
    

    shell函数
    1. shell函数的例子
    #!/bin/sh
    
    # Define your function here
    Hello () {
       echo "Hello World"
    }
    
    # Invoke your function
    Hello
    
    1. shell函数处理输入和返回输出
    # input  /var/www/
    # output \/var\/www\/
    handle_path_str()
    {    
        echo $1 | sed 's#\/#\\\/#g'
    }
    
    build_path= /var/www/
    build_path_str="$(handle_path_str $build_path)"
    

    相关文章

      网友评论

          本文标题:shell 语法整理

          本文链接:https://www.haomeiwen.com/subject/rysksqtx.html