bash 语法的特殊性

1,条件语句的判断

#!/bin/bash
echo "try bash if."

read input
string2="y"
if [ $input = $string2 ] 
then
echo "yes"
else
echo "no"
fi

read input
string2="y"  #=之间不能有空格
if [ $input = $string2 ]  #if与[]之间有空格 ,条件判断之间有空格
then  #这个then是一个必须品,而且必须单起一行

echo "yes"
else
echo "no"
fi


特别注意:

1),string2=”y“ =号两边不能有空格

2),if [ * ]   []中间的条件必须用两个空格隔开,if与[]也必须有空格隔开

3),if ["$inbput" = "string2"]  判断表达式两边必须有空格

4),then 这一行必须单起一行,不能与if同行,否则语法错误,凡是有if, elif字样的都要有换行的then

holy。。。

bash语法和tcl一样让人难受。


2,test命令(即条件判断语句,可以使用[] 代替)

1),数值比较(和perl有点类似)

n1 -eq n2 equal

n1 -ge n2 great or equal

n1 -gt n2 great than

n1 -le n2 less equal

n1 -lt n2 less than

n1 -ne n2 not equal

2),字符串比较(如果是变量,可以之间引用,也可以待双引号,如果是常量,可以直接引用,也可以待引号引用)

str1 = str2

str1 != str2

str1 < str2

str1 > str2

-n str1 长度是否非0  none zero

-z str1 长度是否为0 zero

3),文件比较(这块要注意是绝对路径还是相对路径)

-d file 检查file是否为一个目录

-e file 检查file是否存在

-f file 检测file存在并且是一个文件

-r file 检测file是否可读

-s file 检测file是否为空

-w file 检测file是否可写

-x file 检测file是否可执行

-0 file 检测file是否属于当前用户

-G file 检测file时候属于当前用户组

file1 -nt file2 检测file1 new than file2

file1 -ot file2 检测file1 old than file2

4),符合条件

if [ condition1 ] && [ condition2 ]  #与,两个条件都满足

if [ condition1 ] ||  [ condition2 ]  #或,有一个条件满足就行


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bash和sh都是Unix/Linux系统中的Shell,它们都是提供命令行界面的工具。主要的区别在于,bash是GNU项目发布的一种更加高级的Shell,支持很多sh不支持的特性,如循环、数组、函数等。而sh是一种更加基础的Shell,它的语法更加简单,但功能比较有限。在Linux系统中,/bin/sh默认指向bash,但也可以配置成指向其他Shell。 ### 回答2: bash和sh都是常见的用于执行shell脚本的工具,它们之间的主要区别如下: 1. 解释器:bash是Bourne Again Shell的缩写,是sh的升级版本,它兼容sh的语法,同时提供了更多功能和特性。sh是Shell的缩写,通常指的是Bourne shell,它是Unix系统早期的标准shell。 2. 功能:bash相比sh拥有更多功能和扩展,例如命令补全、命令历史记录、变量和数组等。bash还支持更多的内置命令和选项,使得脚本编写更加便捷和灵活。 3. 兼容性:由于bash是sh的升级版本,并兼容sh的语法,因此使用bash编写的脚本可以在大多数支持sh的系统上运行,但反过来不一定成立。使用sh编写的脚本可能会在一些bash特定的功能上出现不兼容的问题。 4. 目标环境:在某些嵌入式或限制资源的系统中,可能没有足够的空间或资源安装bash,而只能使用sh来执行shell脚本。 总之,bash相比sh提供了更多功能和特性,更适合编写复杂的脚本和日常使用。而sh作为早期的标准shell,更适合在一些特殊环境下运行,或者为了兼容性考虑编写简单的脚本。在大多数情况下,如果系统中已经安装了bash,通常会首选使用bash来执行shell脚本。 ### 回答3: Bash(Bourne Again SHell)和Sh(Bourne SHell)是两种常用的Unix/Linux系统下的Shell编程语言。它们之间有以下几点区别: 1. 命令语法Bash是Sh的超集,它兼容Sh的所有基本语法,并在此基础上扩展了许多新特性。Bash支持更多的命令和选项,包括数组、关联数组、循环语句、逻辑判断等,更加方便和灵活。 2. 交互功能:Bash提供了更多的交互功能,如命令行编辑、命令历史记录、自动补全等。这些功能使得在命令行下使用更加方便和高效。 3. 脚本执行:Bash执行脚本时,脚本需要以#!/bin/bash开头,即指定使用Bash作为解释器。而Sh则以#!/bin/sh开头。由于Bash是Sh的超集,因此以#!/bin/bash开头的脚本也可以在Sh下运行,但一些特定的Bash语法可能会引起问题。 4. 执行效率:由于Bash提供了更多的功能和特性,因此在执行某些特定脚本时,Bash所需的资源和执行时间可能会比Sh更多。对于一些简单的脚本,Sh可能会更快。 综上所述,Bash相比于Sh具有更多且更强大的功能。在大多数情况下,我们更倾向于使用Bash,因为它提供了更多的灵活性和便利性。但对于一些简单的脚本或在特定环境要求下,使用Sh也是可以的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值