bash中反引号和$()如何使用
这篇文章主要介绍了bash中反引号和$()如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇bash中反引号和$()如何使用文章都会有所收获,下面我们一起来看看吧。
在bash中,与(反引号)都是用来作命令替换的,命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。
反引号的使用方式
下面是一个简单的实例:
[root@localhost~]#echo"Thereare`ls|wc-l`filesinthisdirectory"Thereare10filesinthisdirectory
ls |wc -l
用于列出和计算当前目录的文件数,然后将它嵌入到 echo 命令中。
在 shell 脚本中,当然可以执行相同的操作,将ls | wc -l
命令的结果分配给一个变量,稍后使用该变量。
[root@localhost~]#file_count=`ls|wc-l`[root@localhost~]#echo"Thereare$file_countfilesinthisdirectory"Thereare10filesinthisdirectory
$()的使用方式
也可以通过使用$()
代替“`反引号来获得相同的结果,如下例所示:
[root@localhost~]#echo"Thereare$(ls|wc-l)filesinthisdirectory"Thereare10filesinthisdirectory
下面是一个例子,我需要对网络连接中的某些问题进行故障排除,因此我决定每分钟显示总连接数和等待连接数。
[root@localhost~]#vimnetinfo.sh#!/bin/bashwhiletruedoss-an>netinfo.txtconnections_total=$(catnetinfo.txt|wc-l)connections_waiting=$(grepWAITnetinfo.txt|wc-l)printf"$(date+%R)-Total=%6dWaiting=%6d\n"$connections_total$connections_waitingsleep60done
运行一下脚本:
[root@localhost~]#./netinfo.sh17:13-Total=158Waiting=417:14-Total=162Waiting=017:15-Total=155Waiting=017:16-Total=155Waiting=017:17-Total=155Waiting=0
如何选择使用哪种方式
这里更推荐使用$()方式。下面是原因: \1. 如果内部命令也使用,
运算符可能会变得混乱。
运算符中嵌套
运算符,则事情将不会按预期工作或根本不起作用。\2. $()
操作符更安全,更可预测。
在 $()
运算符中的内容被视为 shell 脚本。从语法上讲,这和把代码保存在文本文件中是一样的。
以下是“`和$()
行为差异的一些示例:
[root@localhost~]#echo'\$x'\$x[root@localhost~]#echo`echo'\$x'`$x[root@localhost~]#echo$(echo'\$x')\$x
关于“bash中反引号和$()如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“bash中反引号和$()如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。