ubuntu 下通过 sh 命令运行脚本产生如下错误:[: y: unexpected operator
今天同事在打包 deb 时发生了如下错误:
[: y: unexpected operator
脚本代码如下:
read -p " Make Release Version [y/n]:" Y
if [ $Y == 'y' ]
then#...
else#...
fi
同事运行脚本的命令为:
sh test.sh
如果直接运行脚本(“./test.sh”)则不会有这个问题。经过上网查资料,发现是因为脚本解释器不同造成的,整理如下:
ubuntu 中,脚本解释器从系统 6.10 开始默认改为了 dash,而使用 sh 命令执行该脚本就是使用 dash 来执行脚本的。在该解释器中,变量与字符串判断是否相同使用的是一个等号,这就造成了上述问题。解决版本就是使用如下命令:
bash ./test.sh
即:通过指明解释器软件。或者将两个等号改为一个等号亦可。
问题解决之后,搜索了下 sh 命令,原来其已经被软连接至 dash 了,如下:
sh -> dash
所以用 sh 执行脚本就是用 dash 执行脚本,所以会报错。 而直接运行脚本则默认使用了 bash,所以能够执行成功,原因是脚本开头写的代码:
#!/bin/bash
这句代码的含义就是告诉系统,该脚本默认执行的解释器为 bash 。
再扩展下,bash 解释器实际上是 Bourne Again shell,它是 Linux 操作系统缺省的 shell,是Bourne shell 的扩展,简称 Bash 。
Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用。
总结:
从时间轴上来说,shell 解释器发展历史如下:
Bourne shell
|(增加大量功能)
bash(Bourne Again shell),位置:/bin/bash,使用方法:#! /bin/bash
| (简化功能)
dash(Debian Almquist Shell),位置:/bin/sh,使用方法:#! /bin/sh
(SAW:Game Over!)
ubuntu 下通过 sh 命令运行脚本产生如下错误:[: y: unexpected operator相关推荐
- linux 上自动执行caffe,linux下caffe的命令运行脚本
参考:https://www.cnblogs.com/denny402/p/5076285.html 首先编译: make -j8 make pycaffe 注:下面的--solver=.... 等价 ...
- ubuntu下面的java一键运行脚本
java的运行分为编译+执行两部分. 怪麻烦的,所以写个脚本一键运行.如下: ------------------------------------------------------------- ...
- 【转】Ubuntu Desktop下自动启动终端并运行脚本
转自:Ubuntu Desktop下自动启动终端并运行脚本 - 简书 alex@ubuntu19:~# lsb_release -a No LSB modules are available. Dis ...
- Ubuntu下将rm命令替换为trash命令
Ubuntu下将rm命令替换为trash命令 rm命令是一个很可怕的命令,因为它不会给你后悔的机会,删了就是删了,再也找不回来了(据说能在lost+found里面恢复,但是操作难度好像很大,反正新手是 ...
- Win10下如何按计划自动运行脚本
Win10下如何按计划自动运行脚本 通过按计划自动定期运行Python脚本或其他可执行文件,我们可以避免忘记手动运行脚本的烦恼.以下是win10下的具体操作步骤(本教程以Python脚本为例): 点击 ...
- 在Ubuntu下构建Bullet以及运行Bullet的例子程序
在Ubuntu下构建Bullet以及运行Bullet的例子程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...
- Ubuntu下使用SSH 命令用于登录远程桌面
Ubuntu下使用SSH 命令用于登录远程桌面 问题描述 工作经常需要在一台电脑(本地主机)上写代码,另一台电脑(服务器,计算力强)上进行训练,两台电脑上都安装的是Ubuntu18.04,为了在loc ...
- ubuntu下git 常用命令
ubuntu下git 常用命令 Git 和代码托管中心 GitHub(外网) Gitee 码云(国内网站) GitLab(局域网) 设置用户签名 git config --global user.na ...
- Ubuntu下几个命令行方式使用的图片浏览工具
想找几个Ubuntu下可以以命令行方式使用的图片浏览工具. Google了一些资料,找到下面几个web: 1.pho:轻巧的命令行图片查看器 其中介绍了工具pho,其功能特点,见下面的转帖内容: ph ...
最新文章
- cogs 服务点设置
- 开发日记-20190403
- 大话数据结构:平衡二叉排序树
- 2017新生儿爆款名字出炉!90后的父母们最受欢迎的居然是.....
- STM32项目(五)——智能回收箱
- Laravel源码学习文章汇总
- LogBack 日志等级设置无效,原因竟然是因为这个?!
- 模拟银行转账(java+mysql+tomcat +JDBC+ druid连接池 + Servlet + Ajax)
- ADI官方提供的源码AD9361+ZC706 利用TCL构建Vivado工程,利用no-OS-master搭建SDK工程
- 【电子商务安全与支付实验】数字证书的申请及使用
- 一步一步建立自己的神经网络
- hibernate创建配置遇到问题:!-- https://mvnrepository.com/artifact/javassist/javassist -- dependency
- keytool运行错误
- Linux ping www.baidu.com 不通解决办法
- Excel计算年龄(足岁)问题:Excel中datedif和VBA中的datediff函数介绍
- 信号完整性之Ansys SIwave_S参数提取(四)
- 再也不见,雅虎被中国市场击败
- 反向代理和正向代理以及Nginx工具的简要使用
- 2014创新工场校园招聘笔试题(9.16北京)
- 全国DAMA-CDGA/CDGP数据治理认证怎么样?