shell编程之命令替换

命令替换指的是将命令的标准输出作为值赋给某个变量,是shell编程中使用非常频繁的功能。

命令替换的格式有两种:一种是反引号(`),一种是$()。例如系统命令date用于获取当前的时间,若将该命令的运行结果保存到变量中,则使用如下:

[root@node1 ~]# date_01=`date`
[root@node1 ~]# date_02=$(date)
[root@node1 ~]# echo $date_01
Sat May 8 18:54:16 CST 2021
[root@node1 ~]# echo $date_02
Sat May 8 18:54:26 CST 2021

若被引用的命令输出有多行,则变量的输出需加引用,若不加引用,则输出的内容中会删除换行符,文件名之间会使用默认的空来填充,即输出的内容只占一行。

[root@node1 ~]# ls=`ls -a`
[root@node1 ~]# echo $ls
. .. add_mius.sh a.txt .bash_history .bash_logout .bash_profile .bashrc b.txt c3pool .cache .cmake .cshrc ejabberd-20.03-0.x86_64.rpm get-docker.sh .gitconfig .git-credentials .history install.sh .mysql_history name.txt newsed.txt .oracle_jre_usage .pearrc .pip .pki .rnd r.txt sed.txt sort.txt split .ssh .tcshrc test uniq.txt
[root@node1 ~]# echo "$ls"
.
..
add_mius.sh
a.txt
.bash_history
.bash_logout
.bash_profile
.bashrc
b.txt
c3pool
.cache
.cmake
.cshrc
ejabberd-20.03-0.x86_64.rpm
get-docker.sh
.gitconfig
.git-credentials
.history
install.sh
.mysql_history
name.txt
newsed.txt
.oracle_jre_usage
.pearrc
.pip
.pki
.rnd
r.txt
sed.txt
sort.txt
split
.ssh
.tcshrc
test
uniq.txt

两个命令需要注意的点是:

  • $()支持嵌套,反引号不行
  • $()仅在bash shell中有效,而反引号可在多种shell中使用
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远不要矫情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值