Shell语法的示例分析

发布时间:2021-12-04 15:37:16 作者:小新
来源:亿速云 阅读:264

这篇文章给大家分享的是有关Shell语法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

转义字符:

Shell语法的示例分析

在对文本解析时,双引号会对字符串解析,单引号保持字面含义。

Shell语法的示例分析

Shell语法的示例分析

echo $?本bash最近一次进程退出码

双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:

Shell语法的示例分析

Shell语法的示例分析

条件测试:退出码0表示成功,非0表示失败

对于×××值言,

    -gt表示大于即great

    -ge表示大于等于great equal

    -eq表示相等equal

    -lt表示小于即little

    -le表示小于等于

read val表示从标准输入读到val

对于字符串比较:直接使用=,==(建议使用),或!=

    可选择$str1==$str2,或"X$str1"=="X$str2"(建议,防止$str1为空时直接比较,X为任意字符)

此处不可使用单引号,单引号只取字面意思

Shell语法的示例分析

Shell语法的示例分析

运行结果:

Shell语法的示例分析

Shell语法的示例分析

运行结果:

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

-d判断是否存在且是目录

-f判断是否存在且是普通文件

dir存在且是目录,test不存在,test.sh存在是普通文件

Shell语法的示例分析

比较字符串最好写成如下方式:

Shell语法的示例分析

Shell语法的示例分析

if-elseif语句:分支

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

$1是一个自动变量,脚本生成时创建:第一个参数,即test.sh.

序列号容器:vector,数组下标从0开始

关联号容器:脚本容器(map:以字符串作为下标)

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

Shell语法的示例分析

转载:

shell中[[]]与[]的区别?

1.概念上来说

"[[",是关键字,许多shell(如ash bsh)并不支持这种方式。ksh, bash(据说从2.02起引入对[[的支持)等支持。
"["是一条命令, 与test等价,大多数shell都支持。在现代的大多数sh实现中,"["与"test"是内部(builtin)命令。

2. 相同:二者都支持算术比较和字符串比较表达式(具体使用可能有点不同)

(1)"-gt", "-lt"是算术比较操作符,用于比较整数的大小。
(2)">", "<"是字符串比较操作符,用于比较字符串的大小,使用字典顺序,与当前的locale有关。

(3)关于字符串比较。[...]、``.``.``.``中都可以对字符串进行比较,比较的顺序是"字典顺序"。对ascii字符来讲,码表中排列在前的较小,这里只要用了"<"、">",就表示是字符串比较,那么9 > 100为真,因为这实际上等价于‘9’ > ‘100’,9在码表中排在1后面,所以字符串"9"大于字符串"100"。只要搞清楚了何时是算术比较,何时是串比较,一般就不会出错了。<><>

(4)建议在使用数值比较的时候,使用let,(())命令,否则容易出错;<>

2.1  “[“用法<>

$ [ 2 -lt 10 ]&&echo true&&echo false<>

true<>

$  [ 2 -gt 10 ]&&echo true||echo false<>

false<>

按字符串比较

$  [ 2 \< 10 ]&&echo true||echo false  <>

false<>

$  [ 2 \> 10 ]&&echo true||echo false  #you should use "\>"<>

true<>

2.2 “[[“用法<>

$  ` 2 -gt 10 `&&echo true||echo fa<>lse

false<>

$  ` 2 -lt 10 `&&echo true||echo false<>

true<>

仍然按字符串比较<>

$  [[ 2 < 10 ]]&&echo true||echo false<>

false<>

$  [[ 2 > 10 ]]&&echo true||echo false<>

true<>

 <>

3.相同:都支持简单的模式匹配<>

这里的模式匹配要简单得多,类似文件名的统配符的扩展规则。还要注意等号右端的模式不能用引号括起,使用引用关闭了某些元字符的特殊功能<>

 <>

3.1  “[“用法<>

$ [ test = test ]&&echo true||echo false  <>

true<>

$ [ test = t*t ]&&echo true||echo false  <>

true<>

$ [ test = t..t ]&&echo true||echo false  #not match.<>

false<>

$ [ test = "t??t" ]&&echo true||echo false #alert: don't quote the pattern,使用引用关闭了?的特殊功能<>

false<>

 <>

Shell语法的示例分析

Shell语法的示例分析

<>

3.2  “[[“用法<>

$ [[ test = test ]]&&echo true||echo false  #normal compare<>

true<>

$ [[ test = t*t ]]&&echo true||echo false  #pattern match.<>

true<>

$ [[ test = t..t ]]&&echo true||echo false  #not match.<>

false<>

$ [[ test = t??t ]]&&echo true||echo false <>

true<>

$ [[ test = "t??t" ]]&&echo true||echo false # alert: don't quote the pattern,使用引用关闭了?的特殊功能<>

false<>

<>

Shell语法的示例分析

Shell语法的示例分析

4.不同点<>

4.1逻辑与和逻辑或<>

(1)"[" :逻辑与:"-a";逻辑或:"-o";<>

(2)"[[":逻辑与:"&&";逻辑或:"||"<>

$ [[ 1 < 2 && b > a ]]&&echo true||echo false<>

true<>

$ [[ 1 < 2 -a b > a ]]&&echo true||echo false<>

bash: syntax error in conditional expression<>

bash: syntax error near `-a'<>

$ [ 1 < 2 -a b > a ]&&echo true||echo false<>

true<>

$ [ 1 < 2 && b > a ]&&echo true||echo false  #wrong syntax<>

bash: [: missing `]'<>

false<>

$ [ 1 < 2 \&\& b > a ]&&echo true||echo false  #aslo wrong<>

bash: [: &&: binary operator expected<>

false<>

 <>

Shell语法的示例分析

Shell语法的示例分析

<>

4.2命令行参数<>

(1)[ ... ]为shell命令,所以在其中的表达式应是它的命令行参数,所以串比较操作符">" 与"<"必须转义,否则就变成IO重定向了;<>

(2)由于"[["是关键字,不会做命令行扩展,所以在[[中"<"与">"不需转义,但是相对的语法就稍严格些。例如在[ ... ]中可以用引号括起操作符,因为在做命令行扩展时会去掉这些引号,而在` `.``.``.` `则不允许这样做;<>

$ [ "-z" "" ]&&echo true||echo false<>

true<>

$ [ -z "" ]&&echo true||echo false<>

true<>

$ [[ "-z" "" ]]&&echo true||echo false

bash: conditional binary operator expected

bash: syntax error near `""'

$ [[ -z "" ]]&&echo true||echo false

true

4.3  ` `.``.``.` `进行算术扩展,而[ ... ]不做

$ [[ 99+1 -eq 100 ]]&&echo true||echo false

true

$ [ 99+1 -eq 100 ]&&echo true||echo false

bash: [: 99+1: integer expression expected

false

$ [ $((99+1)) -eq 100 ]&&echo true||echo false

true

4.4正则表达式匹配区别

[]需加\[,\]转义。

感谢各位的阅读!关于“Shell语法的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. shell 语法
  2. xml语法的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

shell

上一篇:Mysql中错误使用SQL语句Groupby被兼容的问题分析

下一篇:SQL查询中什么时候需要使用表别名

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》