shell脚本基础

shell脚本基础

1. 语法基本介绍

1.1 开头

程序必须以下面的行开始(必须方在文件的第一行):

#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

当编辑好脚本时,如果要执行该脚本,还必须使其可执行。

要使脚本可执行:

编译 chmod +x filename 这样才能用./filename 来运行

1.2 注释

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。

如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。

1.3 变量

在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明

2. 写脚本的注意事项

  1. 脚本开头第一行必须是#!/bin/bash
  2. 脚本要有执行权限
  3. 思路要清晰,不要写无关的东西
  4. 开两个终端,一个编写脚本,一个测试功能
  5. 禁止将未执行的代码放入脚本中
  6. 脚本当中的命令要是有绝对路径
  7. 脚本中定义的变量和注释要见名知意

3. 变量

3.1 什么是变量

变量就是可以变化的量,不是一个固定的值

3.2 变量名称注意事项

  • 只能包含字母、数字、下划线,并且不能以数字开头
  • 不应该跟系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要用“_”下划线开头
  • 最好做到见名知义
  • 不能使用程序中的保留字,例如if、for等

3.3 变量类型

  • 字符型
  • 数值型
  • 整型
  • 浮点型
  • 布尔型

3.4 变量操作

  • 设置变量
  • 引用变量
  • 撤销变量

单引号与双引号的区别

[root@localhost ~]# a=1
[root@localhost ~]# echo $a
1
[root@localhost ~]# echo '$a'
$a
[root@localhost ~]# echo "$a"
1
[root@localhost ~]# echo {$a}b
{1}b

3.5 base变量类型

  • 环境变量
  • 本地变量(局部变量)
  • 位置变量
  • 特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)

3.5.1 本地变量

VAR_NAME=VALUE      //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效

local VAR_NAME=VALUE    //局部变量,作用域为当前代码段,常用于函数

#示例
[root@localhost ~]# a=1
[root@localhost ~]# echo $a
1

#新开一个终端
[root@localhost ~]# echo $a

[root@localhost ~]# 

3.5.2 环境变量

由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。

export VAR_NAME=VALUE   //作用域为当前shell进程及其子进程

3.5.3 位置变量

$1,$2,$3,....       //用来引用脚本的参数
    shift [num]         //位置变量使用完以后退出,后面的参数向前推进

#示例
[root@localhost ~]# cat test.sh 
#!/bin/bash

for i in $*;do
    echo $1
    shift 3
done
[root@localhost ~]# bash test.sh 1 2 3 4 5 6 7 8 9 11 12 13 
1
4
7
11

...

3.5.4 特殊变量

$#      //是传给脚本的参数个数
$0      //是脚本本身的名字
$!      //是shell最后运行的后台Process的PID
$@      //是传给脚本的所有参数的列表
$*      //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$      //是脚本运行的当前进程ID号
$?      //是显示上条命令的退出状态,0表示没有错误,其他表示有错误
原文地址:https://www.cnblogs.com/leixixi/p/14611328.html