• shell脚本简单学习教训经验


    1. shell字符串  双引号

      双引号的优点:双引号里可以有变量

      双引号里可以出现转移字符

      单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的

      单引号字符串中不能出现单引号(对单引号使用转义符后也不行)

    2. shell显示变量

      read命令从标准输入中读取一行,并把输入行的每个字段的只指定给shell变量:

      #!/bin/sh

      read name

      echo "$name It is a  test"

    3. 显示命令执行结果

      echo `date`

      这里使用的是反引号`,而不是单引号

      结果是显示当前日期:

      Thu Jul 24 10:10:10 CST 2017

    正好自己可以运行下刚好碰到的任务:
    test.sh:
    #!/bin/bash

    hivesql="insert ovewrite local directory '/tmp/test' row format delimited fields terminated by '|' select * from test where id='001' "

    while read id;do

      f=$f" or id='$id' "

    done

    hivesql=$hivesql $f

    echo $hivesql

    输入命令行: cat  某.txt  |  ./test.sh    即可查看管道输入文件内容拼接好的hivesql变量。

    shell语句

    $(cat ${configFile} | awk -F '|' '{if($1 == "pro"){print $2}}')

    以'|'为分隔符,读取${configFile}中的内容,如果第一个字段为'pro' 读取第二个字段。
    eg: pro|guangdong shanghai beijing zhejiang sichuan hunan hubei

    AWK的工作原理:

    awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。

    (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里

    (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100)

    (3)输出的时候按照内置变量OFS(out FS),输出

    (4)读入下一行继续操作

    简单实例

    [root@tx3 ~]# echo "this is a book" > awk.txt

    [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt

    is this a book




    在python2的字符编码问题时常会遇到“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)”的编码错误。

    而用以下方法通常可以解决:

    1 import sys
    2 reload(sys)
    3 sys.setdefaultencoding('utf-8')

    仅供个人初学习,记录。

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/wangzhaoshuang/p/7406657.html
Copyright © 2020-2023  润新知