一 shell编程入门简介
shell是操作系统的最外层,shell可以合并编程语言以控制进程和文件,以及启动和控制其他程序。
shell通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出,简单来说shell就是一个用户跟操作系统之间的一个命令解释器。
shell是用户与Linux操作系统之间沟通的桥梁,用户可以输入命令执行,又可以利用shell脚本编程去运行。
shell,utilites及kernel位置关系
Linux shell种类非常多,常见的shell如下:
•□ bourne shell(/usr/bin/sh或/bin/sh);
•□ bourne again shell(/bin/bash);
□ C shell(/usr/bin/csh);
•□ K shell(/usr/bin/ksh);
•□ shell for root(/sbin/sh)。
shell脚本编程需要注意以下几个事项:
•□ shell脚本名称命名一般为英文的大写、小写;
•□ 不能使用特殊符号、空格来命名;
•□ shell脚本后缀以.sh结尾;
•□ 不建议shell命名为纯数字,一般以脚本功能命名;
•□ shell脚本内容首行需以#!/bin/bash开头;
•□ shell脚本中变量名称尽量使用大写字母,字母间不能使用“-”,可以使用“_”;
•□ shell脚本变量名称不能以数字、特殊符号开头。
以下为第一个shell编程脚本,脚本名称为first_shell.sh,代码如下:
#! /bin/bash
#By Author song
echo “hello world !”
自己创建first_shell.sh文件,输入以上内容即可
first_shell.sh脚本内容详解如下:
•□ #!/bin/bash:固定格式,定义该脚本所使用的shell类型。
•□ #By author song:表示脚本创建人,#号表示注解。
•□ echo“Hello World!”shell脚本主命令,执行该脚本呈现的内容。
shell脚本编写完毕,如果运行该脚本,运行用户需要有执行权限,可以使用chmod o+x first_shell.sh赋予可执行权限。然后./first_shell.sh执行即可,还可以直接使用命令执行/ bin/sh first_shell.sh直接运行脚本,不需要执行权限,最终脚本执行显示效果一样。
初学者学习shell编程,可以将在shell终端运行的各种命令依次写入到脚本内容中,可以把shell脚本当成是shell命令的堆积。
==以下为第一个shell编程脚本,脚本名称为first_shell.sh,代码如下:
#! /bin/bash
#By Author song
echo “hello world !”
自己创建first_shell.sh文件,输入以上内容即可
first_shell.sh脚本内容详解如下:
•□ #!/bin/bash:固定格式,定义该脚本所使用的shell类型。
•□ #By author song:表示脚本创建人,#号表示注解。
•□ echo“Hello World!”shell脚本主命令,执行该脚本呈现的内容。
shell脚本编写完毕,如果运行该脚本,运行用户需要有执行权限,可以使用chmod o+x first_shell.sh赋予可执行权限。然后./first_shell.sh执行即可,还可以直接使用命令执行/ bin/sh first_shell.sh直接运行脚本,不需要执行权限,最终脚本执行显示效果一样。
二、shell编程之变量详解
shell属于非类型的解释型语言,在使用变量时不像C++、JAVA语言编程时需要事先声明变量,shell给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中,都可以用赋值符号“=”为变量赋值,shell为弱类型语言,定义变量不需要声明类型,如果在使用时需要明确变量的类型,可以使用declare指定类型,declare常见参数如下:
•□ +/-:“-”可用来指定变量的属性,“+”为取消变量所设的属性。
•□ -f:仅显示函数。
•□ r:将变量设置为只读。
•□ x:指定的变量会成为环境变量,可供shell以外的程序来使用。
•□ i:指定类型为数值,字符串或运算式。
shell编程中变量分为3种:系统变量、环境变量、用户变量,其中系统变量在对参数判断和命令返回值判断时使用,而环境变量则主要是在程序运行时需要设置,用户变量又称为局部变量,多使用在shell脚本内部或者临时局部。
shell变量名在定义时,首个字符必须为字母(a~z,A~Z),不能以数字开头,中间不能有空格,可以使用下画线“_”,不能使用“-”,也不能使用标点符号等。
例如定义变量A=123,定义这样一个变量,A为变量名,123是变量的值,变量名有格式规范,变量的值可以随意指定。变量定义完成,如需要引用变量,可以使用$A。
shell常见的系统变量、环境变量、用户变量详解如下。
(1)shell编程常见系统变量如下:
•□ $0:当前脚本的名称。
□ $n:当前脚本的第n个参数,n=1,2,…,9。
•□ $∗:当前脚本的所有参数(不包括程序本身)。
•□ $#:当前脚本的参数个数(不包括程序本身)。
•□ $?:命令或程序执行完后的状态,返回0表示执行成功。
•□ $$:程序本身的PID号。
(2)shell编程常见环境变量如下:
•□ PATH:命令所示路径,以冒号为分割。
•□ HOME:打印用户家目录。
•□ SHELL:显示当前shell类型。
•□ USER:打印当前用户名。
•□ ID:打印当前用户ID信息。
•□ PWD:显示当前所在路径。
•□ TERM:打印当前终端类型。
•□ HOSTNAME:显示当前主机名。
(3)shell编程用户变量如下:
•□ A=jfedu.net:自定义变量A。
•□ N_SOFT=nginx-1.12.0.tar.gz:自定义变量N_SOFT。
•□ BACK_DIR=/data/backup/:自定义变量BACK_DIR。
•□ IP1=192.168.1.11:自定义变量IP1。
•□ IP2=192.168.1.12:自定义变量IP2。