shell脚本是一个应用非常广泛的东西。
shell脚本文件的后缀通常为.sh,且写入文件内容最上方为**#!/bin/bash**
你可以在这个.sh文件中写入你想要执行的命令。
使用sh来执行shell脚本文件,如:#你也可以通过文件夹路径直接访问到文件来执行文件
sh hello.sh
赋予脚本root权限:
chmod +x hello.sh
变量
定义一个局部变量,实例:
#!/bin/bash
str="hello world!"
echo ${str} !!!!
这里面要注意的是为变量赋值时你在其他c++或python中养成的好习惯比如在变量定义时在等号两边加空格让程序变得更简洁在shell脚本中可能会使脚本运行不起来,所以在编写shell脚本时应该改掉这个习惯。
使用 export 定义一个全局变量也就是环境变量,对Hadoop或python等进行的环境变量配置就是使用export 关键字进行的。
export JAVA_HOME = /usr/local/java/jdk
使用$来查看定义的环境变量
echo $PATH
使用特殊字符进行向shell脚本中进行传参数,相当于在c++中main函数参数的作用欸
$# | 传递到脚本的参数个数 |
---|---|
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程的ID |
$! | 后台运行的最后一个进程的ID |
$@ | 与$*作用相同,但在使用时加引号,在引号中返回每个参数 |
$? | 显示最后命令的退出状态,0表示没有错误,其他任何值表示有错误。 |
实例:
脚本文件:test.sh
#!/bin/bash
echo "第一个参数为 $1"
echo "参数个数为 $#"
echo "传递的参数作为一个字符串显示 $*"
执行时传递参数:
sh test.sh aaa bbb ccc
stdout:
第一个参数为 aaa
参数个数为 3
传递的参数作为一个字符串显示 aaa bbb ccc
运算符
实例:
#!/bin/bash
a=1;
b=2;
echo `expr $a + $b`;
echo $((a+b));
echo $[a+b];
你在使用的时候要注意的是,在使用expr进行运算计算的时候,使用的运算符两边一定要用空格隔起来,而且在使用乘除/运算符的时候呢要在运算符的前面加上转义符反斜杠(、的英文输入),而反观下面的两种用法则无这些限制。*
if语句分支
实例:
#!/bin/bash
read -p "please input your name:" NAME;
if [$NAME = root]
then
echo "hello ${NAME} welcome !"
elif [$NMAE = itcast]
then
echo "hello ${NAME} welcome !"
else
echo "get out now!"
fi
需要注意到的是条件判断使用方括号,且相等的判断不是双等号而是一个等号,且每一个条件判断if之后会有then来代表开始执行其他语句,if语句使用fi结尾。
for语句
实例:
for N in 1 2 3
do
echo $N
done
for ((i = 0;i<5;i++))
do
echo $i
done
没啥好说的,看着for吧。
函数:
对于一个函数呢,shell中的函数比较简便,无形参,直接加一个大括号定义一个函数,使用函数返回值直接使用 $? 调用返回结果。
直接看实例:
funwithreturn() {
a=1
b=2
return $(($a+$b))
}
funwithreturn
echo "函数的返回值为 $? !"