你似乎把bash与其他一些编程语言混淆了.变量被替换,然后左边的内容被执行.

"$a"

这是引号之间的a的内容. a是空的,所以这相当于:

""

那不是命令. “没有找到指令.”由于存在错误,执行不成功(shell返回代码不为0),因此命令的后半部分 – && echo 1 – 没有被执行.

反引号…

``

…执行它们之间的任何内容,该命令的输出替换整个构造. (还有$()也做同样的事情,不太容易在脚本中被忽略.)所以……

`echo "foo"`

……会评价……

foo

……然后将被执行.所以你…

``

……评估……

…然后“成功执行”(因为没有错误).

如果要测试a的内容,并且仅当a不为空时才执行echo 1,则应使用test命令:

test -n "$a" && echo 1

测试有一个方便的别名,[也可以方便地忽略尾随] …

[ -n "$a" ] && echo 1

…和bash-ism [[知道]关于变量替换,因此不需要引号来避免抱怨缺少参数,如果$a确实评估为空…

[[ -n $a ]] && echo 1

……或者,当然,更详细……

if [[ -n $a ]]

then

echo 1

fi

啊.错过了问题的核心部分:

$a && echo 1

这是两个陈述,用&&分隔.如果第一个语句执行OK,则仅执行第二个语句. bash将该行拆开并执行第一个语句:

$a

这是…

…这是“成功的”,所以第二个语句被执行.反对…

&& echo 1

…是语法错误,因为没有第一个语句. ;-)(Tricky,我知道,但这就是这个cookie崩溃的方式.)

linux 字符串 空,linux – bash空字符串/命令相关推荐

  1. linux bash 字符串 连接,Linux Bash 中字符串操作

    Linux Bash 中字符串操作 所谓 "子字符串" 就是出现在其它字符串内的字符串. 比如 "3382" 就是 "this is a 3382 t ...

  2. Linux脚本双引号字符去除,shell命令去除字符串里双引号

    echo \"refs/changes/84/727284/1\" | sed 's/\"//g' shell变量内字符替换和变量字符修改 a=12345123 #将${ ...

  3. linux桌面卷积文件删除不掉,Linux 删除文件夹和文件的命令(强制删除包括非空文件)...

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r ...

  4. linux 磁盘数据空 还有读写,Linux入门之磁盘管理(5)dd命令使用

    Linux入门之磁盘管理(5)dd命令使用 在Linux中,经常需要一些数据读写等测试,还有文件以及其它数据的备份迁移,一般使用cp命令可以解决一部分,但是其无法进行控制数据的流向及动作,这时就可以使 ...

  5. linux下字符串操作,Linux Bash 中字符串操作

    所谓"子字符串"就是出现在其它字符串内的字符串. 比如 "3382" 就是 "this is a 3382 test" 的子字符串. 我们有 ...

  6. linux 文本字符串过滤,linux文本内容过滤命令(grep)

    grep 命令 用途:用于打印输出符合条件字符串所在的行 格式: grep [选项]...  ""查找条件"   目标文件 常用选项: ① -i : 忽略大小写 ② -v ...

  7. linux bash 字符串 连接,Bash连接字符串

    在本小节中,将学习如何在Bash Shell脚本中添加或连接字符串. 在bash脚本编制中,可以将两个或多个字符串添加或连接在一起,这称为字符串连接.它是任何一种编程语言的通用要求之一.应用特殊字符或 ...

  8. linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符

    问题描述 我有一个这样的字符串: |abcdefg| 我想要得到一个新的字符串(如string2)与原始字符串调用没有两个|在开始和结束时 所以我会有这个 abcdefg 在bash中可能吗? 最佳解 ...

  9. linux rpm -qa,为什么使用rpm -qa命令显示是空的?

    为什么使用rpm -qa命令显示是空的?请问大家这是什么问题呢?怎么解决? 之前还显示装了很多RPM包的,最近好像是删错了什么文件,使用rpm -qa命令显示是空的.而且YUM命令也不能使用.开始以为 ...

  10. linux shell 文件空,linux shell编程 如何判断一个文件是否为空

    shell 判断文件/目录是否为空 jfkidear144932015-01-15 shell中如何判断一个变量是否为空 l_nan365492014-07-14 在shell中如何判断一个变量是否为 ...

最新文章

  1. nginx rewrite和根据url参数location
  2. 4_Tensorflow框架的使用(20181217-)
  3. @Value和Hibernate问题
  4. 相机裁剪旋转_怎么旋转视频画面角度
  5. java接口文件定义类_Java入门笔记(四)类、包和接口
  6. iOS:Masonry 英文原档介绍
  7. 2015推荐的Android框架
  8. 批处理添加桌面快捷方式
  9. popen函数的实现
  10. android之自定义弹框
  11. DIGITS安装及服务部署
  12. 史上最详细Excel制作生命游戏,体验生命演化。
  13. ICON 文件构成 及 制作工具
  14. 网易公开课“Programming Paradigms” 笔记
  15. 02-ElasticSearch创建索引
  16. 02. 重构-代码的坏味道
  17. U盘文件恢复,3个方法恢复教程
  18. Qt 之 QSS(白色靓丽)
  19. 永磁同步电机力矩控制(三):关于电机位置信号
  20. linux应用服务排错,浅谈SELinux的配置以及排错问题

热门文章

  1. c语言实现链表结构6,用c语言实现的链表结构--数据结构实验
  2. python安装gz文件_python tar.gz怎么安装-问答-阿里云开发者社区-阿里云
  3. 非你莫属 java全球排名_TIOBE:2018年5月全球编程语言排行榜
  4. Java 200+ 面试题补充③ Dubbo 模块
  5. 转:ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
  6. 搭建nginx+php后访问不到项目
  7. 如何用c语言从txt文件中读取数据
  8. sdk开发包如何使用_SDK如何使能行业?华为昇腾要用软件充分释放硬件性能
  9. 个人pkm软件 pim软件_个人申请软件著作权需要走哪些流程
  10. php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法