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')

仅供个人初学习,记录。

原文地址:https://www.cnblogs.com/wangzhaoshuang/p/7406657.html