迥异的Linux Shell Script

简介:


摘要:如果你已经习惯编写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/sh
myVar="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
输出:
one
two
three
one two three three  #函数myfunc中的变量,在函数之外仍然存在。
#你可以通过关键字 local 限制变量只在函数中有效果 #这个比较迥异

还有更迥异的吗?

目录
相关文章
|
16天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
30天前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
33 4
|
30天前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
24 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
1月前
|
监控 Shell Linux
在Linux中,如何使用shell脚本进行系统监控和报告?
在Linux中,如何使用shell脚本进行系统监控和报告?
|
29天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本检测磁盘使用率?
在Linux中,如何使用shell脚本检测磁盘使用率?
|
29天前
|
Shell Linux 开发工具
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
|
29天前
|
缓存 Shell Linux
在Linux中,bash shell 中的 hash 命令有什么作用?
在Linux中,bash shell 中的 hash 命令有什么作用?
|
29天前
|
Unix Shell Linux
在Linux中,什么是Shell脚本,并且如何编写它。
在Linux中,什么是Shell脚本,并且如何编写它。
|
1月前
|
监控 Shell Linux
在Linux中,什么是Linux shell?
在Linux中,什么是Linux shell?
|
1月前
|
Shell Linux 程序员
在Linux中, 什么是shell函数?如何使用它们?
在Linux中, 什么是shell函数?如何使用它们?