Bash 脚本:`(反引号)运算符和 $()的使用方式
` 反引号操作符可以在 shell 脚本中使用,因为它很容易与其他命令结合使用。但是,还有一种更“推荐”的方式来做同样的事情,使用$()运算符。本文将介绍在 shell 脚本中使用他们的优缺点。
|
反引号的使用方式
下面是一个简单的实例:
[root@localhost ~]# echo "There are `ls | wc -l` files in this directory" There are 10 files in this directory
ls |wc -l
用于列出和计算当前目录的文件数,然后将它嵌入到 echo 命令中。
在 shell 脚本中,当然可以执行相同的操作,将ls | wc -l
命令的结果分配给一个变量,稍后使用该变量。
[root@localhost ~]# file_count=`ls | wc -l` [root@localhost ~]# echo "There are $file_count files in this directory" There are 10 files in this directory
$()的使用方式
也可以通过使用$()
代替`
反引号来获得相同的结果,如下例所示:
[root@localhost ~]# echo "There are $(ls | wc -l) files in this directory" There are 10 files in this directory
下面是一个例子,我需要对网络连接中的某些问题进行故障排除,因此我决定每分钟显示总连接数和等待连接数。
[root@localhost ~]# vim netinfo.sh#!/bin/bash while true doss -an > netinfo.txtconnections_total=$(cat netinfo.txt | wc -l)connections_waiting=$(grep WAIT netinfo.txt | wc -l)printf "$(date +%R) - Total=%6d Waiting=%6d\n" $connections_total $connections_waitingsleep 60 done
运行一下脚本:
[root@localhost ~]# ./netinfo.sh 17:13 - Total= 158 Waiting= 4 17:14 - Total= 162 Waiting= 0 17:15 - Total= 155 Waiting= 0 17:16 - Total= 155 Waiting= 0 17:17 - Total= 155 Waiting= 0
如何选择使用哪种方式
这里更推荐使用$()方式。下面是原因:
1. 如果内部命令也使用`
,`
运算符可能会变得混乱。
- 将需要转义内部的
`
,如果将单引号作为命令的一部分或结果的一部分,阅读和排除脚本故障可能会变得困难。 - 如果开始考虑在其他
`
运算符中嵌套`
运算符,则事情将不会按预期工作或根本不起作用。
2. $()
操作符更安全,更可预测。
在 $()
运算符中的内容被视为 shell 脚本。从语法上讲,这和把代码保存在文本文件中是一样的。
以下是`
和 $()
行为差异的一些示例:
[root@localhost ~]# echo '\$x' \$x [root@localhost ~]# echo `echo '\$x'` $x [root@localhost ~]# echo $(echo '\$x') \$x
总结
在较为复杂的命令语句中,推荐使用$()方式。
Bash 脚本:`(反引号)运算符和 $()的使用方式相关推荐
- 【Linux】Shell(Bash)单引号、双引号、不加引号和反引号用法和区别详解
简要总结 不加引号:不会将含有空格的字符串视为一个整体输出, 如果内容中有变量等,会先把变量解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续 ...
- Shell脚本,环境变量,位置变量,预定义变量,自定义变量,单引号双引号反引号用法,一般变量和交互式变量read定义,密文输入变量信息
Shell脚本,变量,系统预设的环境变量,位置变量,预定义变量,用户的自定义变量 一.定义变量 1.以固定的名称存放可以变化的值 2.格式为 变量名=变量值 3.取消变量的格式 unset 变量名 4 ...
- Shell脚本之反引号【``】和 $()
一.奇怪的返回 今天在搞监控的时候,修改一个老脚本,主要是通过对操作系统进行判断来获取不同的监控参数.(获取top参数在不同操作系统上也有个坑,会在另外一篇里面写) 脚本如下,非常简单: #处理Cen ...
- linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 因为空格在linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免 ...
- shell 脚本中双引号、单引号、反引号的区别,其他命令
如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止 ...
- Shell脚本中 双引号(“”)单引号(‘’)反引号(``)的区别
1.由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释. 2.由双引号括起来的字符,除$(美元符号).\(反斜杠).'(单引号).和" ...
- expect脚本中使用普通用户执行sh脚本命令,expect脚本中解决``反引号获取值有问题方法、expect遍历登录不同主机不同密码的主机执行指定命令方法
文章目录 说明 代码 脚本内容 存放ip和其密码 执行脚本 测试[必做] 批量跑脚本 后台验证 说明 今天有一个脚本需求[目前有400台虚拟机,手动登录肯定不现实的],5期所有虚拟机都需要验证是否已经 ...
- Shel脚本学习—反引号、单引号、双引号区别与联系
反引号 反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一 ...
- Shell脚本 单引号、双引号和反引号的区别
定义一个变量时,等号两边不能有空格,若有空格可用双引号或单引号将变量内容结合. (1)双引号内的特殊字符可保有原本的特性 var="lang is $LANG" echo $var ...
最新文章
- 查看matlab中函数源代码的方法
- Ubuntu 18.04缺少libgconf-2.so.4
- 2015!我来了,你在哪里?今年第一篇
- windows下安装TensorFlow(清华镜像)
- 如何使用 Laravel Collections 类编写神级代码
- c++使用Vigenere加解密文本的算法(附完整源码)
- Android 开源框架 ( 二 ) 基于OkHttp进一步封装的okhttp-utils介绍
- 算法第五章上机实践报告
- libcurl 遇到的问题
- 剑指Offer面试题:1.实现单例模式
- mysql内容_mysql 的基本内容
- DosBox装Windows98
- 主要空间数据挖掘方法
- 一篇文章带你彻底了解Kubernetes
- 【GlobalMapper精品教程】010:EPSG简介、通过EPSG坐标转换应用实例
- 2018计算机cpu调研,2018最新电脑处理器天梯图,进来了解下
- 精细化运营探索:基于响应模型场景化应用
- play 项目 入到Idea
- vue实现微信网页授权登录
- 与《新走遍美国》的邂逅