博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迥异的Linux Shell Script
阅读量:7075 次
发布时间:2019-06-28

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

摘要:如果你已经习惯编写Shell脚本,那么一切都显得很自然了。但像我这样,之前已经习惯了C语言(风格)的编程,就觉得Shell并不是那么友好。这里将记录一些Shell和"C风格"迥异的地方,以供参考。本文测试环境:GNU bash, version 3.00.15(1)-release (i386-redhat-linux-gnu)。文章中很多实例直接来在参考文件[1]、[2]。

1、变量定义等号两边不能有空格

#!/bin/bash

myvar=3 #正确
myvar = 3; #等号边多了空格,是错误的!很迥异

1.1、还是空格,这次是不能没有

 
#!/bin/shmyVar="OFF"if [   $myVar = 'OFF'    ];then  #这里[]中括起来的内容两端必须有空格,if [$myVar = 'OFF']是不能正常工作的。也很迥异吧#注意 if 和 [ 之间也是有空格的!        echo "works"else        echo "Not works"fi

2、双引号和单引号

testvar=5

myvar='Haha$test' #shell会解释$test
myvar2="Haha$test" #shell会解释$test
echo $myvar $myvar2 #输出:Haha$test Haha5

双引号中的字符如果有变量,shell会尝试解释它,单引号中不会。所以,如果字符串中没有要解释的变量尽量使用单引号,据说速度会快些。

这个到不算很迥异,还有很多其他的语言也都有这样的约定。

3、奇怪的算术运算

shell中算术运算需要使用$((和))将算术运算括起来

$(( $myvar + 12 )) #这个非常迥异

4、case语句

 
case "${x##*.}" in      gz)            gzunpack ${SROOT}/${x}            ;;      bz2)            bz2unpack ${SROOT}/${x}            ;;      *)            echo "Archive format not recognized."            exit            ;;esac           #这个比较迥异 "esac"、";;"、"bz2)"

5、函数中的变量作用范围

 
#!/usr/bin/env bash myvar="hello" myfunc() {     myvar="one two three"     for x in $myvar     do         echo $x     done} myfunc echo $myvar $x输出:onetwothreeone two three three  #函数myfunc中的变量,在函数之外仍然存在。#你可以通过关键字 local 限制变量只在函数中有效果 #这个比较迥异

还有更迥异的吗?

转载地址:http://gouml.baihongyu.com/

你可能感兴趣的文章
SQLite第二课 源码下载编译
查看>>
ibatis动态生成列时的列名无效
查看>>
通用汽车新增130辆测试无人车,配激光雷达
查看>>
python之通过“反射”实现不同的url指向不同函数进行处理(反射应用一)
查看>>
10.6 监控io性能;10.7 free;10.8 ps;10.9 查看网络状态;10.10 抓包
查看>>
delegate的用法
查看>>
Ubuntu <2TB sdb preseed示例
查看>>
Android开发之旅:组件生命周期(二)
查看>>
使用LVS+NAT搭建集群实现负载均衡
查看>>
LVM 磁盘分区扩容
查看>>
mysql5.6之key_buffer_size优化设置
查看>>
查看Linux服务器网卡流量小脚本shell和Python各一例
查看>>
Linux TC的ifb原理以及ingress流控
查看>>
AgileEAS.NET之敏捷并行开发方法
查看>>
Java源码分析系列之ArrayList读后感
查看>>
性能测试之手机号码python生成方式
查看>>
统计数据库大小的方法
查看>>
PHP递归遍历文件夹
查看>>
用户系列之五:用户SID查看之终结版
查看>>
ubuntu 11.10下载和编译Android源码
查看>>