本文中主要介绍了linu系统简单的shell脚本和bash编程for循环的用法。


1.shell脚本的基础介绍

简单点理解,shell就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。shell做为脚本语句有三大特定:1.不需编译,由解释器解释执行;2.弱类型:变量类型3.变量通常不需要事先声明。

常用的脚本语言有:bash,python,perl,ruby等。这里重点介绍bash。


2.bash编程之变量类型

bash是linux中最常用的脚本语言,他也是面向过程的脚本语言。在讲语法之前,首先要介绍一下bash的变量。

bash的变量类型一共有5种。

(1)本地变量

语法:set VAR_NAME=value

       unset VAR_NAME

引用:${VAR_NAME}

作用范围:当前shell进程

(2)局部变量

语法:local VAR_NAME=value

       unset VAR_NAME

引用:${VAR_NAME}

作用范围:在当前shell进程的局部范围内有效

(3)环境变量

语法:export VAR_NAME=value

       unset VAR_NAME

引用:${VAR_NAME}

作用范围:当前shell及其子shell

(4)位置变量

如$1,$2等

(5)特殊变量

如$$,$?,$#,$@等

(6)变量名称的命名法则:

  只能包含字母、数字和下划线;

  不能以数字开头;

  严格区分大小写;

  要做到见名知义;

  命名规范,风格统一。


3.bash脚本的基本说明

⑴bash脚本在编写完成之后可以用 #bash /path/tp/script_file.sh这种脚本语言类型+全路径的方式来执行。如果需要独立执行需要做到两点:1.要有独立的执行权限2.定义好shebang,即脚本的第一行:#!/path/to/explainer;例如#!/bin/bash或者#!/usr/bin/python。

⑵例如在/root/a.sh下的bash如果需要执行必须执行全路径的命令,即# /root/a.sh

而所有的命令都会到PATH环境变量所定义的路径下去查找,如果不想要每次执行都加上全路径,只需要加上export PATH=$PATH:/root即可。

⑶bash的配置文件分为两类:profile类和bashrc类。

profile类包括/etc/profile,/etc/profile.d/*.sh和~/.bash_profile。这些配置文件主要用来声明环境变量和执行程序或脚本。

bashrc类包括/etc/bashrc和~/.bashrc。这些配置文件主要用来定义本地变量和定义命令别名。

⑷脚本文件中,所有以#号开头的行均为注释行。


4.一个简单的脚本实例:添加用户和密码,密码同用户名。代码如下:

nano useradd.sh
#!/bin/bash
# Author:Luo
# Date:2014-3-1
# Version:0.0.1
# Description:Add users
UserName="user1"
useradd $UserName
echo $UserName | passwd --stdin $UserName  >  /dev/null
echo "Add $UserName successfully"
useradd user2
echo user2 | passwd  --stdin user2  >  /dev/null
echo "Add user2 successfully"
useradd user3
echo user3 | passwd  --stdin user3 > /dev/null
echo "Add user3 successfully"
unset UserName


5.bash的调试方式

⑴检查脚本的语法错误;不真正执行脚本:

bash –n /path/to/script_file.sh

⑵调试执行脚本:

bash –x /path/to/script_file.sh