1、后台命令
Ctrl + Z 程序站位后台运行
bg 查看后台运行程序
fg 序号 调到前台
2、shell中执行命令并将结果赋值给变量
variable=$(command)
3、字符串替换
- 脚本替换
- vim编辑 末行命令替换
- 将\N替换成空格或者空
#将字符串\N换成空或空格
#将\N替换成空
cat tmp.txt |sed ':jix;N;s/\\N//g;b jix'
#将\N替换成空格
cat tmp.txt |sed ':jix;N;s/\\N/ /g;b jix'
#将换行换成空或空格
#将\N替换成空格
echo `cat tmp.txt`
cat tmp.txt | xargs
4、字符串截取
- 使用 # 号截取右边字符(如果希望直到最后一个指定字符(子字符串)再匹配结束,那么可以使用
##
)
url="http://c.biancheng.net/index.html"
echo ${url#*:}
结果为//c.biancheng.net/index.html
-
使用 % 截取左边字符(截取左边的 *要写在指定字符右边)(如果希望直到最后一个指定字符(子字符串)再匹配结束,那么可以使用%%)
url="http://c.biancheng.net/index.html"
echo ${url%/*} #结果为 http://c.biancheng.net
echo ${url%%/*} #结果为 http:
*
是通配符的一种,表示任意长度的字符串。*chars
连起来使用的意思是:忽略左边的所有字符,直到遇见 chars
5、if条件判断
6、shell按照指定符号切分字符串
[root@znrmdapp1 rmdDataFlow]# cat tmp.sh
#!/bin/bash
string="hello,shell,haha"
array=(${string//,/ })
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
[root@znrmdapp1 rmdDataFlow]# . tmp.sh
hello
shell
haha
[root@znrmdapp1 rmdDataFlow]#
6、shell判断文件目录或文件是否存在
当前目录下是否存在目录jar
if [ -d "jar" ];
then
echo "yes"
else
echo "no"
fi
当前目录下是否存在文件jar.sh
if [ ! -f "jar.sh" ];
then
echo "no"
else
echo "yes"
fi
判断hdfs目录是否存在
dir=/test
hadoop fs -test -e $dir
if [ $? -ne 0 ]; then
echo "Directory not exists!"
hadoop fs -mkdir -p $dir
else
echo "exists"
fi