加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

【Shell】Shell脚本注意事项

发布时间:2020-12-15 18:17:38 所属栏目:安全 来源:网络整理
导读:1、 大部分的 Linux 系统默认配置 bash 。对比 sh , bash 扩展了一些命令和参数,并且保留对 sh 的一些兼容。 除了 bash 、 sh 还有 csh (语法类似 C 语言)、 tcsh ( csh 升级版)、 ash (适合低内存环境) ?2、 脚本开头 #!/bin/sh ?# !必须有,后面

1、大部分的Linux系统默认配置bash。对比shbash扩展了一些命令和参数,并且保留对sh的一些兼容。除了bashsh还有csh(语法类似C语言)、tcshcsh升级版)、ash(适合低内存环境)

?2、脚本开头 #!/bin/sh ?#!必须有,后面跟上的是shell的路径

3、变量赋值和取值

(1)?Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。

variable=value??注意:赋值号左右不能留空格

(2)?$后面跟上变量表示读取变量里面的值,特殊情况可以加上{}表示变量的边界

#!/bin/sh
a=1
abc=2
echo $a
echo ${a}bc
echo $abc

?运行结果:

?

(3)?单引号和双引号的区别:以单引号‘ ‘包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量也会把它们原样输出,双引号内的变量才会取值输出

#!/bin/sh
tmp="test"
a="hello world $tmp"
b=hello world $tmp
echo $a
echo $b

?运行结果:

?

4、Linux命令结果赋值:用反引号(Esc下面、tab上面的点)表示

#!/bin/sh
tmp=`test`
commond=`date`
a="hello world $commond"
echo $a

?

5、运算符:

(1)?expr :一般用于算数运算后面跟上需要运算的算法,需要用反引号,每个参数间要有空格

(2)?$(( ?)): 算法要有空格

(3)?let: 算法不能有空格

#!/bin/sh
tmp="test"
a=`expr 2+2`
r=$((4*5))
let a=a+1
echo $r $a

a=`expr 2 + 2`
r=$(( 4*5 ))
let a = a + 1
echo $r $a


a=`expr 2 + 2`
r=$(( 4*5 ))
let a=a+1
echo $r $a

运行结果:

?

6、数组定义

(1)?

或者

?

(2)?取值:

?

7、If...else...if: 和常用编程语言的区别在于结束是用fi表示,每个条件后面要加上then

(1)?方括号([ ])内的参数之间必须有空格

(2)?多条件判断

?

?

8、?case ... esac?:类似其他语言的switch ... casecase工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。

?

9、While 循环

?

10、Shell 函数:可以将可能重复用到的命令封装成一个函数,函数可以带返回值,函数内用return返回,函数外用$?接收返回值。Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。

如果有需要返回其他类型的值,可以在外部定义一个变量,来接受结果。

?

?

11、参数:shell脚本可以带参数,在脚本中,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...

?

?

12、“#”井号表示注释

?

13、特殊字符

特殊变量

说明

$#

传递给函数的参数个数。

$*

显示所有传递给函数的参数

$?

函数的返回值。

$0

当前脚本的文件名

$$

当前Shell进程ID

-eq

检测两个数是否相等,相等返回 true

-ne

检测两个数是否相等,不相等返回 true

-gt

检测左边的数是否大于右边的,如果是,则返回 true

-lt

检测左边的数是否小于右边的,如果是,则返回 true

-ge

检测左边的数是否大等于右边的,如果是,则返回 true

-le

检测左边的数是否小于等于右边的,如果是,则返回 true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读