结合示例说明shell是如何被解析的

 更新时间:2022-04-08 11:14:08   作者:佚名   我要评论(0)

经常写shell,那么shell如何被解析的呢?

一、sed的经典示例


$符号在shell中解析为变量,但是在sed中代表文件的最后一行。
如何显示/etc

经常写shell,那么shell如何被解析的呢?

一、sed的经典示例

$符号在shell中解析为变量,但是在sed中代表文件的最后一行。

如何显示/etc/passwd 的倒数第三行

redirect]# sed -n '$-2p' /etc/passwd

这个明显是不行的,sed内部有一个行号计数器,一行一行读取直到最后一行 ,$才是最后一行的行号。

如何解决?

先用wc -l计数,然后变量传进去再打印倒数第三行。

redirect]# line=25
redirect]# sed -n "${line}p" /etc/passwd

注意不能用单引号,单引号属于强引用,无法将变量解析。

如何要同时显示最后一行和倒数第三行?

redirect]# sed -n "${line}p;$p" /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin

这样为何只显示了倒数第三行内容呢?

第二个$ 属于sed的最后一行,不应该暴露给shell解析。

redirect]# sed -n "${line}p;"'$p' /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

这样也是可以的

redirect]# sed -n "${line}p;\$p" /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
redirect]# sed -n "${line}""p;\$p" /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib
 
redirect]# sed -n ${line}"p;\$p" /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

二、awk的经典示例

使用awk输出hello world,在hello后增加单引号

redirect]# awk 'BEGIN{print "hello world"}'
hello world
redirect]# awk 'BEGIN{print "hello'"'"' world"}'
hello' world
这样拆解开来看
'BEGIN{print "hello'    "'"    ' world"}'
redirect]# awk "BEGIN{print \"hello' world\"}"
hello' world
047是单引号的ASSIC值
 redirect]# awk 'BEGIN{print "hello\047 world"}'
hello' world
 
# print 中双引号的值都保留给awk
awk -v q="'" 'BEGIN{print "hello"q" world"}'
hello' world

到此这篇关于结合示例说明shell是如何被解析的的文章就介绍到这了,更多相关shell 解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • shell自定义函数及参数调用解析
  • Linux shell操作mysql数据库深入解析
  • Shell两种for循环对应实现方法解析
  • 解析shell排序的实现代码
  • shell之正向解析脚本的实现方法
  • shell 中小括号、中括号及大括号的区别解析
  • shell之分离解析脚本的实现方法

相关文章

  • 结合示例说明shell是如何被解析的

    结合示例说明shell是如何被解析的

    经常写shell,那么shell如何被解析的呢? 一、sed的经典示例 $符号在shell中解析为变量,但是在sed中代表文件的最后一行。 如何显示/etc
    2022-04-08
  • MySQL中一条SQL查询语句是如何执行的

    MySQL中一条SQL查询语句是如何执行的

    目录前言1. 处理连接1.1 客户端和服务端的通信方式1.1.1 TCP/IP协议1.1.2 UNIX域套接字1.1.3 命名管道和共享内存1.2 权限验证1.3 查看MySQL连
    2022-04-08
  • vue实现横屏滚动公告效果

    vue实现横屏滚动公告效果

    本文实例为大家分享了vue实现横屏滚动公告效果的具体代码,供大家参考,具体内容如下 HTML文件 <template> ? <div id="box" ref="box"> ? ?
    2022-04-08
  • Vue3中vuex的基本使用方法实例

    Vue3中vuex的基本使用方法实例

    目录一、基本结构二、基本使用三、将store中的数据模块化后的使用1.模块化2.使用补充:如何改变vuex中的属性总结 一、基本结构 src/store/in
    2022-04-08
  • Java两个List<T> 求交集,差集,并集,去重后的并集

    Java两个List<T> 求交集,差集,并集,去重后的并集

    目录操作的List<T>声明求交集 retainAll()求差集 removeAll()求并集 addAll()求去重后的并集 操作的List<T>声明 oldList List<String> oldLi
    2022-04-08
  • vue3引入highlight.js进行代码高亮的方法实例

    vue3引入highlight.js进行代码高亮的方法实例

    目录背景描述:一、安装依赖:二、在vue3主入口main文件,对highlight进行引入和注册:三、页面使用:四、看下效果展示吧:五、一些优化:1.
    2022-04-08
  • SpringMVC中MultipartFile转File的两种方式

    SpringMVC中MultipartFile转File的两种方式

    在spring上传文件中,一般都使用了MultipartFile来接收,但是有需要用到File的地方,这里只介绍两种转为File的方法,当然也有一些其他的方法
    2022-04-08
  • vue实现列表垂直无缝滚动

    vue实现列表垂直无缝滚动

    本文实例为大家分享了vue实现列表垂直无缝滚动的具体代码,供大家参考,具体内容如下 实现新闻列表的轮播(如下图) 上代码 封装的so-marqu
    2022-04-08
  • vue实现竖屏滚动公告效果

    vue实现竖屏滚动公告效果

    本文实例为大家分享了vue实现竖屏滚动公告效果的具体代码,供大家参考,具体内容如下 html文件 <template> <div class="scroll-wrap"> ? ?
    2022-04-08
  • Java?超详细讲解十大排序算法面试无忧

    Java?超详细讲解十大排序算法面试无忧

    目录排序算法的稳定性:一.选择排序二.冒泡排序三.插入排序四.希尔排序五.堆排序六.归并排序七.快速排序八.鸽巢排序九.计数排序十.基数排序
    2022-04-08

最新评论