iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Shell中命令替换的示例分析
  • 412
分享到

Shell中命令替换的示例分析

2023-06-16 12:06:49 412人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“shell中命令替换的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Shell中命令替换的示例分析”这篇文章吧。什么是命令替换简单的来说就是在 SHELL 内嵌

这篇文章主要为大家展示了“shell中命令替换的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Shell中命令替换的示例分析”这篇文章吧。

什么是命令替换

简单的来说就是在 SHELL 内嵌套多条命令,一次性执行得到结果。

1、一层 SHELL 嵌套
# echo `whoami`# echo $(whoami) # echo "hello,`whoami`"# echo "hello,$(whoami)"

Shell中命令替换的示例分析

2、二层 SHELL 嵌套
# echo `cat ./gn2.txt` | sed -s "s;$; --list;"

使用 ``读取文件内容,再使用管道符二次处理后。执行!

注意:这里已经用了一层嵌套,以下多个小节会套用以实现二层嵌套。

a. 使用 "$()" 进行二层嵌套

Shell中命令替换的示例分析

b. 使用 "|" 进行命令导向

Shell中命令替换的示例分析

c. 注意事项以及解答一些疑问

可能有读者已经注意到了,之前在简单 SHELL 一层嵌套中说了嵌套还有另一种。那为什么不使用 ` ` 进行嵌套。

  • 根本的原因是:` ` 不支持命令嵌套执行!

    • 强制执行。也只能认出***组,其余按照空格作为间隔各个执行 或 按照管道符(含)直到末尾执行。

  • 比较陈旧。容易与“单引号”混淆。

    • 它是美式键盘左上角 ESC 下面的包含 ~ 的反引号键!

  • 已有替代品。$(...) 格式受到POSIX标准支持,也利于嵌套。

    • $() 可以多层嵌套类似 $($($())) ,但如果内部有一个` ` 也是可以执行的哟(出于兼容考虑)!

3、进阶

之前我们介绍了 ``$(...) ,这俩种命令执行。

想来现在你一定对命令执行有比较深的理解了。现在,我们需要再进阶一下~

1、 (cmd){var}

关于 ( ){ },和 命令替换 一样都是 shell 扩展 父类下的相关概念。

提示:{} 头部大括号右侧必须有一个空格,尾部括号左侧必须有分号结尾。

# ( echo firest;echo second; )# { echo third;echo fourth; }

Shell中命令替换的示例分析

注意: ( ) 只是对一串命令重新开一个 子 shell 进行执行, { } 对一串命令在 当前 shell 执行。

2、(){} 造成的影响

a. () 括号内的语句影响在括号内

# var=source# ( echo $var;var=global;echo $var; )# echo $var

Shell中命令替换的示例分析

b. {} 括号内的语句影响到全局。

# echo $var# { echo $var;var=global;echo $var; }# echo $var

Shell中命令替换的示例分析

注意:{} 改变 var 的变量以后,外部也受到了影响。

什么是参数扩展

参数扩展的基本格式是 ${ parameter },扩展的结果是 ${ parameter }被替换为相应的值。

1、实例一
echo $1 $11echo $1 ${11}

Shell中命令替换的示例分析

首先解释下 ${1..9} 是什么意思。在我们写 Shell 时必不可免的需要传递参数以实现自定义变量。当超过阿拉伯数字 9 以后。就需要使用 ${ parameter } 明确告诉Shell11 个参数是 ${11}

提示:上图显示 101 就是因为 $11 不满足 [1-9]{1} 。系统将 11 拆分成 $11 ,所以运算后结果是 101

2、实例二
ban=banecho a $bananaecho a ${ban}ana

Shell中命令替换的示例分析

这个实例中,我想输出 banana 。已经定义了一个 ban 的变量为 ban ,只要加上 ana 就可以成为 “笨啦啦”。

但是很显然的不加 {} 是无法做到使变量 $ban 配合 ana 显示出 banana 的!

什么是变量扩展

从官方定义上来说,我并不应该将 “变量扩展” 无中生有出来。

" $ 字符引入参数扩展,命令替换或算术扩展。" —— 官方手册

主要是出于俩个方面考虑:

  • 多数接受。国内出现了大量 ”变量扩展“ 的文章,多数人已经接受这个名称。

  • 便于理解。参数就是 ${...} 括号内的东西,而变量一词可表示所有操作围绕变量展开。

  • 便于记录。切分以后,对写这篇文章的排版有帮助。亦可以从基础、中级、高级有一定水平划分。

实例:

var='This is one test sentence.'var1=parametervar2=Word

现在我们有了这样的一个句子,我希望做一些判断、摘取(或者说:切片)或修改。我该如何操作?

1、变量替换

a. ${parameter:-word}

# echo ${var1:-$var2}parameter# var1=# echo ${var1:-$var2}word

如果 var1 未设置或为空,则替换成 var2

b. ${parameter:=word}

同上。位置参数和特殊参数不能以这种方式分配。

c. ${parameter:?word}

# var1=# echo ${var1:?var2}bash: var1: var2# echo $?1

当变量 var1 未设置或为空,shell 也是可交互时,进行报错并且退出。如果 shell 不可交互,则发生变量替换。

d. ${parameter:+word}

# echo $var1parameter# echo $var2word# echo ${var1:+$var2}word# echo $var1parameter

如果 var1 为空或未设置,那么就什么都不做。不然使用 var2 进行替换。

提示: 在我测试的时候,我发现并不是全局生效的。

2、变量切片

a. 范围切片(同方向)

# echo ${var:8:17}one test sentence

注意:俩个数字都是从头开始数的。

b. 范围切片(非同向)

# echo ${var:8:-1}one test sentence# echo ${var:8:(-1)}one test sentence

提示:俩种写法都是正确的。

c. 切片位置

# a='This is one'# echo ${#a}11

提示 :首先建立变量 a='This is one' ,然后使用 echo ${#a} 将字符数量读了出来。

3、变量修改

a. 简单修改

# echo ${var}This is one test sentence.# echo ${var/one/a}This is a test sentence.

提示:个人认为这种是***的方式了,可以范围式修改(包含删除)。

b. 简单删除

# echo ${var%sentence.}This is one test
# echo ${var#This is}one test sentence.

c. 附:表格

< 如显示不全,请左右滑动 >
变量设置方式说明
${变量#关键字}若变量内容从开始的数据符合“关键字”,则将符合的最数据删除
${变量##关键字}若变量内容从开始的数据符合“关键字”,则将符合的最数据删除
${变量%关键字}若变量内容从开始的数据符合“关键字”,则将符合的最数据删除
${变量%%关键字}若变量内容从开始的数据符合“关键字”,则将符合的最数据删除
${变量/旧字符串/新字符串}若变量内容符合“旧字符串”,则***旧字符会被新字符替换
${变量/旧字符串//新字符串}若变量内容符合“旧字符串”,则全部旧字符会被新字符替换

以上是“Shell中命令替换的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Shell中命令替换的示例分析

本文链接: https://www.lsjlt.com/news/283610.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Shell中命令替换的示例分析
    这篇文章主要为大家展示了“Shell中命令替换的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Shell中命令替换的示例分析”这篇文章吧。什么是命令替换简单的来说就是在 SHELL 内嵌...
    99+
    2023-06-16
  • shell命令中定向输出的示例分析
    这篇文章给大家分享的是有关shell命令中定向输出的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mycommand >mylog.txt 2>&1 应该是最经典的用法了。命令的结果可...
    99+
    2023-06-09
  • Linux中shell命令帮助格式的示例分析
    这篇文章主要介绍Linux中shell命令帮助格式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言linux shell命令通常可以通过-h或--help来打印帮助说明,或者通过man命令来查看帮助,有时...
    99+
    2023-06-09
  • linux用户、权限及shell命令的示例分析
    这篇文章将为大家详细讲解有关linux用户、权限及shell命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用户 用户组      ...
    99+
    2023-06-05
  • Shell命令替换的方式有哪些
    本篇内容介绍了“Shell命令替换的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!命令替换(command substitutio...
    99+
    2023-06-09
  • Linux中命令行的示例分析
    这篇文章将为大家详细讲解有关Linux中命令行的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、命令行真的好吗程序员的使命维基百科的解释:命令行界面(英语:command-line interf...
    99+
    2023-06-06
  • Docker命令的示例分析
    小编给大家分享一下Docker命令的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! Docker命令   1.命令...
    99+
    2023-06-07
  • CMD命令中目录类命令的示例分析
    这篇文章给大家分享的是有关CMD命令中目录类命令的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(一)MD——建立子目录 1.功能:创建新的子目录2.类型:内部命令3.格式:MD[盘符:][路径名]〈子目...
    99+
    2023-06-08
  • linux命令的示例分析
    这篇文章主要为大家展示了“linux命令的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux命令的示例分析”这篇文章吧。概述:用户使用shell跟内核交互,Linux中有很多命令,...
    99+
    2023-06-12
  • MySQL命令的示例分析
    小编给大家分享一下MySQL命令的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL的基本操作可以包括两个方面:M...
    99+
    2024-04-02
  • shell中printf命令格式化输出语句的示例分析
    小编给大家分享一下shell中printf命令格式化输出语句的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介printf 命令用于格式化输出, 是ec...
    99+
    2023-06-09
  • Linux命令行和shell脚本编程的示例分析
    小编给大家分享一下Linux命令行和shell脚本编程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一个脚本文件代码如下:#!/bin/bashech...
    99+
    2023-06-09
  • Linux命令和命令行的示例分析
    这篇文章将为大家详细讲解有关Linux命令和命令行的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是命令我们通常所说的Linux命令行是运行在终端(terminal)的shell (阅读Lin...
    99+
    2023-06-13
  • PHP中命令模式的示例分析
    这篇文章主要介绍PHP中命令模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例。作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际...
    99+
    2023-06-20
  • CentOS中搜索命令的示例分析
    这篇文章将为大家详细讲解有关CentOS中搜索命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。windows下在找不到一下文件啊等等我们都会使用一些搜索命令,帮助自己来找到想要的东西。linu...
    99+
    2023-06-10
  • MySQL 8.0.18命令的示例分析
    小编给大家分享一下MySQL 8.0.18命令的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!打开刚刚解压的文件夹 C:...
    99+
    2024-04-02
  • Linux命令行的示例分析
    这篇文章主要介绍了Linux命令行的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. Google让我们从一个巨头开始吧:Bing!好吧,只是开个玩笑,事实上应该是...
    99+
    2023-06-16
  • node.js命令行的示例分析
    这篇文章主要介绍了node.js命令行的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。process (进程)process对象是一...
    99+
    2024-04-02
  • shell脚本中批量复制及执行命令的示例分析
    这篇文章主要介绍了shell脚本中批量复制及执行命令的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,...
    99+
    2023-06-09
  • Shell命令行中特殊字符与其转义的示例分析
    这篇文章将为大家详细讲解有关Shell命令行中特殊字符与其转义的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。特殊符号及其转义大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 ca...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作