Linux中Shell的命令替换用法笔记

640?wx_fmt=png

命令替换主要是指将命令的标准输出值赋值给某个变量。命令替换属于Shell编程中非常重要的功能,需要熟悉掌握。

命令替换的方式

1、反引号:`命令`

2、$():$(命令)

用法说明:date1=`date` #将date命令值给date1变量

date2=$(date) #将date命令值给date2变量

echo ${date1}

echo ${date2}

注意:如果引用的命令输出的内容包含多行,此时如果不通过引用的方式输出变量,则输出的内容将会删除换行符,文件名之间会使用系统默认的空

来填充,即输出内容只占一行。

例如:ls=`ls -l`

#不引用变量值的输出

echo $ls

输出:

total 20 drwxr-xr-x 4 root root 4096 Apr 6 19:08 DotNetCore drwxr-xr-x 4 root root 4096 Apr 18 19:49 hgm -rw-r--r-- 1 root root 6140 Nov 12 2015 mysql-community-release-el7-5.noarch.rpm drwxr-xr-x 2 root root 4096 Feb 22 14:11 tools

#不引用变量值的输出

echo "$ls"

输出:

total 20

drwxr-xr-x 4 root root 4096 Apr  6 19:08 DotNetCore

drwxr-xr-x 4 root root 4096 Apr 18 19:49 hgm

-rw-r--r-- 1 root root 6140 Nov 12  2015 mysql-community-release-el7-5.noarch.rpm

说明:以上反引号的命令替换可以用$()进行替换,由于考虑到反引号和单引号比较像,很容易出错造成代码难以维护,建议使用${}相对比较清晰。

注意:如果是命令嵌套的话就只能使用$()了,反引号不支持。$()仅在Bash Shell中有效,反引号可以在多种UNIX Shell中可以使用。

比如:file_lines=$(wc -l $(ls | sed -n '1p')) #计算ls命令列出的第一个文件的行数,采用了两层嵌套

输出:162 20190320132917.sql



posted @ 2019-05-15 06:54  天使不哭  阅读(384)  评论(0编辑  收藏  举报