shell编程语法
运行shell命令,需要在前面加echo
shell中变量:
$HOME :当前用户主目录 $PWD :当前运行命令的目录 $USER: 当前用户 set: 显示当前shell所有变量 export+ 变量名 :可把变量提升为全局环境变量
定义变量:
STR=“hello world” A=9 A=ls -la反引号,运行里面的命令,并把结果返回给变量A, 也可以写成A=$(ls -la)
shell中特殊变量:
$? 表示上一个命令退出的状态 $$ 表示当前进程编号 $0 表示当前脚本名称 $n 表示n位置的输入参数(n代表数字,n>=1) $# 表示参数的个数,常用于循环 ∗ 和 *和 ∗和@ 都表示参数列表
运算符:
格式 :expr m + n 或$((m+n)) 注意expr运算符间要有空格 计算(2 +3 )×4 的值 echo expr \expr 2 + 3` * 4` 或 $(((2+3)*4))
for循环:
for N in 1 2 3 do echo $N done 或者 for ((i = 0; i <= 5; i++)) do echo “welcome $i times” done
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
if判断:
if condition then statements [elif condition then statements. …] [else statements ] fi [ condition ] (注意condition前后要有空格) [ condition ] && echo OK || echo notok 条件满足,执行后面的语句
常用判断条件:
= 字符串比较 -lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge 大于等于 -ne 不等于 自定义函数: function funname () { action; [return int;] }
命令行文本处理:
1、cut命令可以从一个文本文件或者文本流中提取文本列
选项与参数: -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思; -c :以字符 (characters) 的单位取出固定字符区间; 例如: 将 PATH 变量取出,我要找出第五个路径。 #echo $PATH | cut -d ‘:’ -f 5 /usr/local/bin
2、sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。
选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同; -b :忽略最前面的空格符部分; -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法; -n :使用『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -u :就是 uniq ,相同的数据中,仅出现一行代表; -t :分隔符,默认是用 [tab] 键来分隔; -k :以那个区间 (field) 来进行排序的意思 例如: /etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何? [root@www ~]# cat /etc/passwd | sort -t ‘:’ -k 3 root❌0:0:root:/root:/bin/bash uucp❌10:14:uucp:/var/spool/uucp:/sbin/nologin operator❌11:0:operator:/root:/sbin/nologin bin❌1:1:bin:/bin:/sbin/nologin games❌12💯games:/usr/games:/sbin/nologin
3、wc 统计文件里面有多少单词,多少行,多少字符。
例如: #wc -m /etc/passwd #统计文件的字符数 1719
4、awk命令
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。 例如: 如果只是显示/etc/passwd的账户 #cat /etc/passwd |awk -F ‘:’ ‘{print $1}’ root daemon bin sys
5、sed命令
sed 是一种在线编辑器,它一次处理一行内容。 替换:s命令 例如: $ sed ‘s/test/mytest/g’ example -----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
更多java、大数据学习面试资料,请扫码关注我的公众号:

专注于大数据和java开发,学习交流可以关注我的公众号:javaydsj

浙公网安备 33010602011771号