Hadoop Day 01

命令
1.crontab
Linux 中支持定时命令:crond
通过crontab命令,可以在固定的间隔时间执行指定的系统指令或shell script 脚本
时间间隔单位 分钟、小时、日、月、周
crontab -e 编辑用户目前的 crontab
基本格式:
*  *  *  *  *  command
分  时  日  月  周  命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时0~23(0表示0点) 7-9表示:7点到9点之间
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
例子:

语句 意思
*/1 * * * * date >> /root/date.txt 表示每分钟执行一次date命令
30 21 * * * /usr/local/etc/rc.d/httpd restart 表示每晚的21:30重启
45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart 表示每月1、10、22日的4 : 45重启
* 23-7/1 * * * /usr/local/etc/rc.d/httpd restar 晚上11点到早上7点之间,每隔一小时重启

shell编程
shell 是用户与内核交互操作的一种接口,称为bash shell
1.基本格式
vi hello.sh ##创建一个脚本

#! /bin/bash ##表示用一种shell解析器来解析执行脚本程序
echo "hello world" ##输出文本

sh hello.sh ##执行脚本
./hello.sh
注:给脚本添加可执行权限 ,使用chmod
2.基本语法
Linux Shell中的变量分为“系统变量”和“用户自定义变量”,set命令可以查看变量
注意:空格问题和字符拼接
字符拼接

a="hello world"
echo $a"s"
##结果为 hello worlds

3.自定义变量
语法:
变量=值 (例如STR=abc)
等号两侧不能有空格
变量名称一般习惯为大写
使用变量: $arg

双引号和单引号有区别,
双引号仅将空格脱意,
单引号会将变量引用比如$param脱意
unset(变量名) :撤销某个变量
readonly 声明静态的变量 ,不能 unset 只读变量
export 可把变量提升为当前shell进程中的全局环境变量,可供其他子shell程序使用

##首先定义一个b.sh
#!/bin/bash
b="b in b.sh"
echo $b
##在a.sh中调用b.sh
#!/bin/bash
a="a in a.sh"
echo $a
. ./b.sh
## 注意:重点关注最前面那个 “.”号。不要在新的bash执行,在当前的bash执行

反引号赋值:反引号,运行里面的命令,并把结果返回给变量

A=`ls -la`
##等价于
A=$(ls -la)

4.特殊变量
$? 表示上一个命令退出的状态码(0-255)
$$ 表示当前进程编号
$0 表示当前脚本名称
$n 表示n位置的输入参数(n代表数字,n>=1)
$# 表示参数的个数,常用于循环
∗ 和 *和 @ 都表示参数列表

5.算术表达式运算

##用expr
 S=`expr 2 + 3`
 B=`expr $S \* 4` ## *需要转译
 echo $B
##用$[]
a=$[1+2]
echo $a
##用let
i=1
let i++

流程控制
1.if 语法格式

if [condition] 
then 
    statements 
elif [condition ]
    then statements. ..
else 
    statements  
fi

例1 输入一个name执行语句

#!/bin/bash
read -p "please input your name:" NAME   ## read命令用于从控制台读取输入数据
if [ $NAME = root ]
        then
                echo "hello ${NAME},  welcome !"
        elif [ $NAME = ydhl2]
                then
                        echo "hello ${NAME},  welcome !"
        else
                echo "get out here !"
fi

注:=左右空格问题
2.判断条件 条件判断基本语法
[ condition ] 条件前后要有空格 非空返回true
[ ] 空返回false

##[]里=周边空格有区别
 if [ a = b ];then echo ok;else echo notok;fi
 ##notok
  if [ a=b ];then echo ok;else echo notok;fi
  ##ok

条件判断组合
注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 && || 符号,而[] 里面逻辑组合可以用 -a等价为&, -o 等价为 |
while语法 和 case语法 和 for语法

##while语法
i=1
while ((i<=3))
do
  echo $i
  let i++
done
##case语法
case $1 in
start)
	echo "starting"
	;;
stop)
	echo "stoping"
	;;
*)
	echo "Usage: {start|stop}"
esac
##for语法方式一
for N in 1 2 a
do
	echo $N
done
##或
for N in 1 2 3; do echo $N; done
##或
for N in {1..3}; do echo $N; done

##方式二
for ((i = 0; i <= 5; i++))
do
	echo "welcome $i times"
done
##或
for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done

函数
1.函数的定义

#!/bin/sh
hello()    ## 函数定义
{
        echo "Hello there today's date is `date +%Y-%m-%d`"
        return  3      ###返回值其实是状态码,只能在[0-255]范围内
}  
echo "now going to the function hello"
hello##调用函数
echo $?  获取函数的return值

2.函数的参数

#!/bin/bash
fun(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
##  echo "第十个参数为 $10 !"$10不能获取第十个参数,${10}获取第十个参数
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
fun 1 2 3 4 5 6 7 8 9 34 73

3.函数返回值

#!/bin/bash
##将两个数相加
funReturn(){
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum$anotherNum !"
    return $(($aNum+$anotherNum))##返回两数字之和
}
funReturn
echo "输入的两个数字之和为 $? !"

4.跨脚本调用

#!/bin/bash
. /root/fun2.sh    ## 注意:. 和 / 之间有空格,调用的路径
##调用函数并输入参数

你可能感兴趣的:(Hadoop Day 01)