Shell 基础(变量设置,awk工具)

目录

概述

变量

常用 (vim + awk)


概述

Shell从诞生之初,就和普通的PC用户无缘了,工程师应该会喜欢Shell,maybe是这个样子的。

shell 提供了你和操作系统Linux之间的通讯方式。

shell的工作方式有两种

  • REPL

  • 写成脚本(命令集合),然后在执行

你在终端写出的shell命令,计算机是无法直接理解的,需要shell解释器来完成翻译工作,shell解释器有多种,使用如下的命令来查看当前机器有哪些shell

cat /etc/shells 

执行脚本的方式

  •  bash + 脚本的相对或者是绝对路径:bash解释器帮助你执行脚本,并不需要执行权限

  • ./script.sh 脚本自己执行(当前脚本需要可执行,也即需要执行权限)

变量

关于用户自定义变量,比较需要注意的地方:

  •  变量名=变量值(等号两边不要有空格,这个我吃过大亏)
  • 获取变量值:$变量名
  • 撤销变量:unset 变量名

重要:但凡脚本定义变量的时候,不带$,再次使用的时候都需要添加$

变量的获取

  • $1, $2, $x     获取第一/二/x个参数

  • $#                获取参数的个数

  • $*                 获取所有参数,参数是一个整体

  • $@               获取所有参数,每个参数区分对待

下面举个例子说明下$* 和$@

[pyd@pydServer pyd-electrician-app_apollo]$ bash test.sh 1 2 3
1 2 3
1
2
3
[pyd@pydServer pyd-electrician-app_apollo]$ cat test.sh
#/bin/bash
for i in "$*"
do
    echo "$i"
done
for i in "$@"
do
    echo "$i"
done

强调一点,在日常写shell脚本的时候,如果获取变量要养成添加 ""  的习惯,""能够获取变量值,即便不写也是OK的,如果能够获取到变量,vim能够表现出特定的颜色,但是添加""是一个好的习惯。

变量的获取中:

  • 单引号不获取变量值

  • 双引号获取变量值

  • 嵌套中,双引号中的单引号可以取值,反之不行

  • 反引号执行反引号中的命令

具体看下面的示例

[pyd@pydServer pyd-electrician-app_apollo]$ bash test.sh 2019
$command
2019
'2019'
"$command"
2020年 01月 09日 星期四 00:26:08 CST
[pyd@pydServer pyd-electrician-app_apollo]$ cat test.sh
#/bin/bash
command=$1
echo   '$command'
echo   "$command"
echo   "'$command'"
echo   '"$command"'
echo   `date`

ps:如果不添加echo,解释器会认为每一行是一句命令。其实,解释器认为每一行都是命令。

数据运算在shell中:"$((运算式))" 或者是 "$[()]" 这里尤其是"" 和 $

[pyd@pydServer pyd-electrician-app_apollo]$ a="$((1+2))"
[pyd@pydServer pyd-electrician-app_apollo]$ echo "$a"
3

常用 (vim + awk)

介绍几个有用的vim模式中非常有用的快捷键:

  • a                   当前光标的下一个

  • o                   当前光标的下一行

  • i                     当前光标

  • shift + g        最后一行

  • shift + 4        光标所在行的最后一个字符

  • :x                   定位第x行

  • :/xxx              搜索xxx

两个有用的系统函数

  • basename

  • dirname

作用如下:

[root@hadoop102 shell]# basename /root/shell/if.sh
if.sh
[root@hadoop102 shell]# dirname /root/shell/if.sh
/root/shell

shell的文本分析工具有cut、sed、最强大的就是awk,具体说说awk,awk是贝尔实验室在77年搞出来的文本编辑神器,这个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。cut能实现的,AWK都能实现。基本用法:awk [选项参数] ‘pattern1{action1}  pattern2{action2}...’ filename;

  • pattern:表示AWK在数据中查找的内容,就是匹配模式

  • action:在找到匹配内容时所执行的一系列命令

  • -F  :参数,指定输入文件折分隔符

  • -v  :参数,赋值一个用户定义变量

AWK的处理流程:首先拿出第一行,然后匹配第一个模板,如果匹配上,就执行action1,如果匹配不上,就什么都不执行,然后匹配第二个模板,匹配上就执行action1,匹配不上就什么也不执行。下面仅举出一个例子,取出第三行的daemon字符串

[root@hadoop103 shell]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@hadoop103 shell]# awk -F : '/^daemon/{print $5}'  /etc/passwd
daemon

$5表示取出的是第五列,$0表示取出整行,^example的意思是匹配以example为开头的字符串。

上初中的时候猛然照镜子的时候发现,是不可能的,这辈子都不可能了;

大四毕业的时候发现高一买的的衣服还穿在身上,是不可能的了,这辈子都不可能了;

,还有可能。

[参考]:

Shell脚本学习

Shell的基本常用命令

Shell学习(cut,sed,awk,sort)

[Shell之awk](https://coolshell.cn/articles/9070.html)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值