3shell命令替换
Shell 命令替换是指将命令的输出结果赋值给某个变量。比如,将使用ls命令查看到的某个目录中的内容保存到某个变量中,这就需要使用命令替换。
Shell 中有两种方式可以完成命令替换,一种是反引号` `,一种是$(),使用方法如下:
variable=`commands`
variable=$(commands)
其中,variable 是变量名,commands 是要执行的命令。commands 可以只有一个命令,也可以有多个命令,多个命令之间以分号;分隔。
|
脚本
|
结果
|
知识点
|
|---|---|---|
#!/bin/bash |
运行脚本,20 秒后可以看到输出结果: Begin time: 2019年 04月 19日 星期五 09:59:58 CST Finish time: 2019年 04月 19日 星期五 10:00:18 CST |
date 命令用来获得当前的系统时间 |
#!/bin/bash |
运行脚本,20 秒后可以看到输出结果: begin time: 1555639864 finish time: 1555639884 run time: 20s |
1.使用 date 命令的 UNIX 时间戳是指从 1970 年 1 月 1 日 00:00:00 到目前为止的秒数。 2.使用date +%s时注意date与+之间有空格,+与%s之间没有空格 3.第 5 行代码中的 在 Shell 中进行数据计算不那么方便,必须使用专门的数学计算命令 |
#!/bin/bash 为了防止出现格式混乱的情况,建议在输出变量时加上双引号。 |
不用双引号总用量 4 -rw-rw-r-- 1 roaddb roaddb 14 8月 26 04:29 aaa.txt -rw-rw-r-- 1 roaddb roaddb 26 8月 20 09:05 a.sh ------------------------ 使用双引号总用量 4 -rw-rw-r-- 1 roaddb roaddb 14 8月 26 04:29 aaa.txt -rw-rw-r-- 1 roaddb roaddb 26 8月 20 09:05 a.sh |
如果被替换的命令的输出内容包括多行(也即有换行符),或者含有多个连续的空白符, 那么在输出变量时应该将变量用双引号包围,否则系统会使用默认的空白符来填充, 这会导致换行无效,以及连续的空白符被压缩成一个 |
再谈反引号和 $()
原则上讲,上面提到的两种变量替换的形式是等价的,可以随意使用;但是,反引号毕竟看起来像单引号,有时候会对查看代码造成困扰,而使用 $() 就相对清晰,能有效避免这种混乱。而且有些情况必须使用 $(),$() 支持嵌套,反引号不行。
$()支持嵌套,举栗:
Fir_File_Lines=$(wc -l $(ls | sed -n '1p'))
echo "$Fir_File_Lines"
结果是:36 anaconda-ks.cfg
要注意的是,$() 仅在 Bash Shell 中有效,而反引号可在多种 Shell 中使用。
3shell命令替换的更多相关文章
- Shell入门教程:命令替换 $() 和 ``
所谓命令替换,是把命令执行后的标准输出放入变量中.这是一个十分有威力的功能.例如说, 想查看工作目录中所有的文件名,可执行ls命令,但如何把这些文件名存入变量中,供往后的程序代码再利用呢? 使用命令替 ...
- 【Shell脚本学习9】Shell替换:Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...
- 关于Shell中命令替换$(...)与后置引用`...`的不同
命令替换 在bash中,$( )与` `(反引号)都是用来作命令替换的.命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行. $( )与`` ...
- Linux Shell编程(24)——命令替换
命令替换 将会重新分配一个命令[1]甚至是多个命令的输出; 它会将命令的输出如实地添加到另一个上下文中. [2]使用命令替换的典型形式是使用后置引用(`...`). 后置引用形式的命令(就是被反引号括 ...
- Shell变量替换,命令替换,转义字符
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. 举个例子: #!/bin/bash a=10 echo -e "Value ...
- Shell命令替换与变量替换
命令替换 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出.命令替换的语法: `command` 注意是反引号,不是单引号,这个键位于 Esc 键下方.下面的例子中,将命令执 ...
- 使用Linux的alternatives命令替换选择软件的版本
上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...
- Bash的命令替换
命令替换:将命令替换为命令的输出,所有的shell支持使用反引号的方法进行命令替换.Bash支持两种形式:$(command) 和`command`命令替换是可以嵌套的,如果使用反引号的形式,在内部反 ...
- Linux shell编程— 命令替换
有两种方法可以将命令输出赋给变量 反引号字符(`) $()格式 命令替换允许你将shell 命令的输出赋给变量 要么用一对反引号把整个命令行围起来: testing=`data` 要么使用$()格式 ...
随机推荐
- Lua _G
1.全局变量的原形 在Lua中,要声明全局变量很简单,那就是定义变量的时候,前面不要加上local. 这个神秘的全局变量,其实本质上也是一个table,它把我们创建的全局变量都保存到一个table里了 ...
- 源码安装nginx env
源码安装nginx 1. For ubuntu:18.04 apt -y install build-essential libtool libpcre3 libpcre3-dev zlib1g-de ...
- Qt 搜索框
一.前言 用户需要输入文本时,可使用QLineEdit控件进行编辑输入,缺点是样式相对单一. 在使用百度搜索输入框时,发觉比较人性化,故采用QLineEdt+QPushButton通过css样式实现自 ...
- 【Web前端HTML5&CSS3】12-字体
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 字体 1. 字体相关的样式 2. font-family 3. 几种字体 手写体 艺术体 乱码字体 中文字体 4 ...
- 用华为MindSpore框架训练数据库类型的数据集
技术背景 在前面一篇博客我们讲到三种用python去读取一个文件的指定行的操作,最终给出的一个结论大概是,对于大型的数据而言,最快的找到指定行的方法是Linux系统自带的sed指令,那么是否只有这一种 ...
- 微信小程序从开发到上线流程
一.微信小程序从开发到上线流程 注册小程序 1.登录微信公众平台 https://mp.weixin.qq.com 2.在微信公众平台>立即注册>小程序中注册微信小程序 3.在邮箱中激活并 ...
- 一探即将到来的 C# 10
前言 本来因为懒不想写这篇文章,但是不少人表示有兴趣,于是最后决定还是写一下. .NET 6 最近几个预览版一直都在开发体验(如 hot reload.linker 等).平台支持(如 Android ...
- GO学习-(19) Go语言基础之网络编程
Go语言基础之网络编程 现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程. 关于网络编程其 ...
- 开源电路分享のFalling Star Board
设计初衷 想自己做个能连网的时钟,结合RT-thread,显示个天气预报什么的,想想就挺有趣的.考虑到当前的芯片价格,和后续的设计,万一还有个啥奇妙的想法呢,就把这个做成了核心板. 一开始就只做了最小 ...
- 简单测试 APISIX2.6 网关
Apache APISIX是一个动态的.实时的.高性能的 API 网关.它提供丰富的流量管理功能,例如负载均衡.动态上游服务.金丝雀发布.断路.身份验证.可观察性等.您可以使用 Apache APIS ...