0、脚本编写初步介绍

(1)脚本第一行以 #!/bin/sh 开始,也可以用 #!/bin/bash 开始,但是第一行必须以这种方式开始.

(2)脚本名需要以.sh结尾

(3)#开头的句子表示注释

(4)若要执行脚本文件,需给脚本赋权限,chmod 755 filenme

(5)脚本执行./filename

1、基本语法

(1)变量:

  • 变量的类型:

运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

  • 特殊变量:

定义变量:
m=
使用变量:
echo $m
echo ${m}

注:

1,变量名和等号之间不能有空格;

2,首个字符必须为字母(a-z,A-Z)。

3, 中间不能有空格,可以使用下划线(_)。

4, 不能使用标点符号。

5, 不能使用bash里的关键字(可用help命令查看保留关键字)。

6,对于变量的{} 是可以选择的, 它的目的为帮助解释器识别变量的边界.

7,$* 和 $@ 的区别为: $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

8,$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

(2)shell中的字符串:

  • 单引号:
  1. 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  2. 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
  • 双引号:
  1. 双引号里可以有变量
  2. 双引号里可以出现转义字符

(3)shell中的替换:

  • 转义符:

在echo中可以用于的转义符有:

  • 变量替换:

可以根据变量的状态(是否为空、是否定义等)来改变它的值.

(4)shell中的运算符:

  •  算术运算符:

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr. 下面使用expr进行;  expr是一款表达式计算工具,使用它可以完成表达式的求值操作;

  • 关系运算符:

只支持数字,不支持字符串,除非字符串的值是数字。常见的有:

  • 布尔运算符:

  • 字符串运算符:

  • 文件测试运算符:

检测 Unix 文件的各种属性。

(5)shell中的数组:

bash支持一维数组, 不支持多维数组, 它的下标从0开始编号. 用下标[n] 获取数组元素;

  • 定义数组:

在shell中用括号表示数组,元素用空格分开。 如:

array_name=(value0 value1 value2 value3)

也可以单独定义数组的各个分量,可以不使用连续的下标,而且下标的范围没有限制。如:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
  • 读取数组:

读取某个下标的元素一般格式为:

${array_name[index]}

读取数组的全部元素,用@或*

${array_name[*]}
${array_name[@]}
  • 获取数组的信息:

取得数组元素的个数:

length=${#array_name[@]}
#或
length=${#array_name[*]}

获取数组的下标:

length=${!array_name[@]}
#或
length=${!array_name[*]}

取得数组单个元素的长度:

lengthn=${#array_name[n]}

2、简单控制语句:

(1)if 语句:

包括:
if if [ 表达式 ]
then
语句
fi . if else if [ 表达式 ]
then
语句
else
语句
fi . if else if if [ 表达式]
then
语句
elif [ 表达式 ]
then
语句
elif [ 表达式 ]
then
语句
fi

例:

包括:
if a=
if [ $a -lt ]
then
echo $a
fi . if else m=
if [$m -lt ]
then
echo $m+
else
echo $m
fi . if else if if [ $ -lt ]
then
val=`expr $ + `
echo $val
elif [ $ -gt ]
then
val=`expr $ - `
echo $val
else
echo $
fi

注:expr前后为反引号··,运算符+、-前后需要空格

(2)for循环:

格式:

for 变量 in 列表
do
command1
command2
...
commandN
done

注:列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。

例:

for loop in
do
echo "The value is: $loop"
done

(3)while循环:

格式:

while command
do
Statement(s) to be executed if command is true
done

例:

int=
m=
while(( $int<= ))
do
m=
echo $int
echo $m
let "int++"
done

转自博客园1

最新文章

  1. gulp 实现 js、css,img 合并和压缩
  2. SQL Server 2008 R2 未能加载文件或程序集Microsoft.SqlServer.Sqm...
  3. Linux socket多进程服务器框架二
  4. ps打造逼真印章效果
  5. jquery输入框按下回车提交表单
  6. Git常用操作命令与图解
  7. 我的第一个chrome扩展(2)——基本知识
  8. php中url传递中文字符,特殊危险字符的解决方法
  9. Twenty Questions
  10. rails 项目部署中 nginx 报错及解决方法
  11. 教你如何利用初级C#语言更改银行存款!!!!
  12. Java学习之旅基础知识篇:面向对象之封装、继承及多态
  13. 老李分享:Web Services 组件 2
  14. 通过crontab调度java -jar任务提示&quot;nohup: failed to run command `java&#39;: No such file or directory&quot;
  15. 毕设记录(ajax第一次请求失败,之后成功的问题)
  16. 关于 early Z 与 z-prepass
  17. 关于 extern &quot;C&quot;的说明
  18. 初学者的分布式Python爬虫教程
  19. 有关PHP 10条有用的建议--转(柒捌玖零)
  20. Silverlight 在ie8 下 报2152 错误

热门文章

  1. C++ 如何进阶?
  2. mysql设置主键自增长和自增长初始值
  3. RHEL7下载
  4. 通过源码安装RYU控制器
  5. 根据字符串从资源中取出对应的资源ResourceManager.GetObject
  6. 登录科普(一)CAS与Oauth
  7. css去除图片间隙
  8. Oracle 12c 新特性 --- 新增对数据泵操作的审计跟踪
  9. 优化Unity游戏项目的脚本(上)
  10. windows mysql绿色版配置Mysql5.7.X