博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell:区分有效命令和表达式
阅读量:6187 次
发布时间:2019-06-21

本文共 912 字,大约阅读时间需要 3 分钟。

首先要区分shell语句的执行后果和shell操作符的返回值:

echo "abcd"语句的执行后果是打印abcd,并非这个语句的返回值是abcd。$var表达式中$操作符的返回值是变量var的值。
``$()操作符能够将其包裹的shell语句的打印结果作为返回值返回。下面详细说明:

shell中有一些操作符,这些操作符能够返回一些值,这些值若不是有效的shell命令就不能直接在shell里运行,举例说明:

比如$操作符能够返回变量的值:

i=abcd$i  #返回字符串abcd,直接在shell里输入$i回车,会提示找不到为abcd的shell命令。

但是可以将$i返回的值作为其他命令的参数,如:

echo $i #会打印abcd

也可以作为值赋给其他变量,如:

j=$i

同理,``操作符能够将其包裹命令的执行结果返回:

`echo "abcd"`  #返回字符串abcd,直接在shell里输入`echo "abcd"`也会报错,因为abcd不是shell命令。

假设一个文件夹下只有两个文件(ls和zzz),在此文件夹下执行ls会打印zzz,什么原因?

因为ls会返回ls命令的执行结果(也就是字符串"ls zzz"),shell将这个执行结果解释为命令,然后执行,执行的结果就是打印zzz。

[19:31 ~/Desktop/t]> lsls  zzz[19:31 ~/Desktop/t]> ls zzzzzz[19:31 ~/Desktop/t]> `ls`zzz

shell下的表达式举例(表达式中操作符详情参考其他笔记):

$var     #返回变量var的值`ls`     #返回ls命令的执行结果$(ls)    #同上$((3+4)) #返回3+4的值$[ 3+4 ] #同上

使用$()``将命令结果赋值给变量时,加双引号能保留换行符:

cat t.txtabecho `cat t.txt`a b #换行丢失echo "`cat t.txt`" #加引号后换行保留ab

转载于:https://www.cnblogs.com/xuejianbest/p/10285187.html

你可能感兴趣的文章
a各种状态
查看>>
Boostrap常用组件英文名
查看>>
flask+redis实现抢购(秒杀)功能
查看>>
Mybatis与Ibatis比较
查看>>
用命令让vbox的虚拟硬盘文件转换成vmware的vmdk
查看>>
探索虚函数(二)
查看>>
python-循环
查看>>
mysql中的case when 与if else
查看>>
HTML中引入CSS的四种常用方法及各自的缺点
查看>>
使用 Load Runner 对web服务器压力测试总结
查看>>
Docker
查看>>
享受无止境 - 改进版WCF Client
查看>>
spring系统学习:day3--练习1、DI
查看>>
python局部赋值规则
查看>>
我使用的几个Linux终端使用技巧
查看>>
C# 邮件发送,可根据需求修改为群发~
查看>>
Layer Cake cf
查看>>
BZOJ 1251 序列终结者
查看>>
(转)如何实现CSS限制字数,超出部份显示点点点...
查看>>
绝心曲
查看>>