博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编程快速入门及实战
阅读量:5982 次
发布时间:2019-06-20

本文共 2408 字,大约阅读时间需要 8 分钟。

shell编程:对于hadoop程序员,通常需要熟悉shell编程,因为shell可以非常方便的运行程序代码。

1、shell文件格式:xxx.sh

#!/bin/sh ---shell文件第一行必须这么写

#井号后面的内容是注释
echo 'abcd' ----echo是输出,回显

在hadoop0:

mkdir shellfile
cd shellfile
ls
vi test.sh
#!/bin/sh
echo 'abcd'
ls
ll
tset.sh ---现在执行发现没有权限,需修改权限才能执行
chmod u+x test.sh
ll    ---列出文件的详细信息
test.sh ---现在就能执行了,输出了abcd

 

vi test.sh

#!/bin/sh
i=0 ---变量不需要声明,初始化不需要指定类型。变量名称只能是字母、数字、下划线组成,不能使用数字开头。
echo $i ---显示变量值使用:echo $变量名

 

2、变量分类:临时变量和环境变量(/etc/profile:export XXX)

3、单引号、双引号、飘号的使用:

vi test.sh
#!/bin/sh
i=0
echo ${i}1234 ---输出01234,要想变量独立使用的时候,用大括号独立开

 

vi test.sh

#!/bin/sh
i=0
echo '$i' ---输出$i,单引号不解析变量
echo "$i" ---输出0,双引号解析变量

 

vi test.sh

#!/bin/sh
i=0
echo '$i'
echo "$i"
echo $(date) ---输出时间
echo `date` ---飘号是执行内容,类似于上面的$(XXX)。这里`data`==$(date)

 

4、位置变量:执行脚本时,传入的参数按照先后顺序使用$1、$2等顺序引用变量值 。

vi test.sh
#!/bin/sh
i=0
echo "first param:$1"
echo "second param:$2"
执行:test.sh abc 123
输出:first param:abc
        second param:123

 

5、使用date:(更详细的查看《》)

1、可以直接执行date,输出的是系统的当前时间。

 

2、格式化输出,date +%Y-%m-%d ---%Y 年 %m 月 %d 日 中间的是分隔符-,也可以换成别人分隔符 2017-4-10

 

3、date +%s      ---格式%s表示自1970-01-01 00:00:00以来的秒数

 

4、date --date=‘2017-4-10’ ---指定时间输出 --date='2009-01-01 11:11:11'

 

5、指定时间输出 --date='3 days ago'

 

6、标准输入、输出、错误:

1、标准输入、输出、错误都是命令行,使用文件描述符0、1、2引用
2、使用重定向可以把信息转换到其他位置
---------
ls > a.txt ---将test.sh转换到a.txt中输出了
ls 1>b.txt ---将a.txt和test.sh转换到b.txt中输出了

 

7、使用crontab(类似于Java中的timer):

  1、Linux下的定时任务
  2、编辑使用crontab -e
        * * * * * date>>/root/a.txt
        一共六列,分别是:分 时 日 月 周 命令
        (默认是按照每个小时的第一分钟输出)
        要想按照每个小时的第5分钟输出,则需修改为:5 * * * * date>>/root/a.txt
        要想每隔5分钟输出,则修改为:5,10,15,20,25,30 * * * * date>>/root/a.txt
  3、查看使用crontab -l

 

8、if判断、for循环:(注意符号之间空格!每一行的结束都有一个空格!!!)

if [ ... ] ---if和[之间、[和条件之间、条件和]之间都有一个空格。
then
...
fi

for ((i=0;i<10;i++)) ---for和(之间有个空格

do
...
done
----------
vi if.sh
#!/bin/sh
if [ 'a'='a' ]
then
echo 'equal'
fi
chmod u+x if.sh
if.sh ---输出equal

 

vi for.sh

#!/bin/sh
for ((i=0;i<10;i++))
do
echo $i
done
chmod u+x for.sh
for.sh

 

9、自定义函数:

function 函数名(){
....
}

//最后一行语句是默认返回值

引用自定义函数文件时,使用source func.sh

------------------
vi func.sh
  #!/bin/sh
  function dat(){
    date +%Y-%m-%d
  }
  dat

chmod u+x func.sh

func.sh

 

vi func.sh

#!/bin/sh
function dat(){
date --date="$1 days ago" +%Y-%m-%d
}
dat 2
func.sh ---输出当前时间的2天前的日期

-----------------

在test.sh中引用func.sh:

vi test.sh
#!/bin/sh
source func.sh ---最好指定路径
dat -2
test.sh ---输出2天后的日期

 

 

转载于:https://www.cnblogs.com/ahu-lichang/p/6692546.html

你可能感兴趣的文章
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
我的友情链接
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
基本安装lnmp环境
查看>>
logstash消费阿里云kafka消息
查看>>
Oracle——条件控制语句
查看>>
day-6 and day-7:面向对象
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
javascript数学运算符
查看>>
LC.155. Min Stack(非优化,两个stack 同步 + -)
查看>>
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>