Shell 编程详解
Posted presley-lpc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell 编程详解相关的知识,希望对你有一定的参考价值。
部分引用自:https://blog.csdn.net/qq_22075977/article/details/75209149
一、概述
Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登录Linux系统时,Shell就会被调入内存去执行。Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。
二、优势
Shell脚本语言的好处是简单、易学、易用,适合处理文件和目录之类的对象,以简单的方式快速完成某些复杂的事情通常是创建脚本的重要原则,脚本语言的特性可以总结为以下几个方面:
1、语法和结构通常比较简单。
2、学习和使用通常比较简单,
3、通常以容易修改程序的“解释”作为运行方式,而不需要“编译。
4、程序的开发产能优于运行效能。
5、Shell脚本语言是Linux/Unix系统上一种重要的脚本语言,在Linux/Unix领域应用极为广泛,熟练掌握Shell脚本语言是一个优秀的Linux/Unix开发者和系统管理员必经之路。利用Shell脚本语言可以简洁地实现复杂的操作,而且Shell脚本程序往往可以在不同版本的Linux/Unix系统上通用。
三、变量
1、用户自定义变量
这种变量只支持字符串类型,不支持其他字符,浮点等类型,常见有这 3 个前缀:
a、unset:删除变量
b、readonly:标记只读变量
c、export:指定全局变量
#!/bin/bash echo "定义普通变量" CITY=CHENGDU echo "定义全局变量" export NAME=cdeveloper echo "定义只读变量" readonly AGE=21 echo "打印变量的值" echo $CITY echo $NAME echo $AGE echo "删除 CITY 变量" unset CITY # 不会输出 CHENGDU echo $CITY
运行结果:
定义普通变量 定义全局变量 定义只读变量 打印变量的值 CHENGDU cdeveloper 21 删除 CITY 变量
2、预定义变量
预定义变量常用来获取命令行的输入,有下面这些:
a、$0 :脚本文件名
b、$1-9 :第 1-9 个命令行参数名
c、$# :命令行参数个数
d、[email protected] :所有命令行参数
e、$* :所有命令行参数
f、$? :前一个命令的退出状态,可用于获取函数返回值
g、$$ :执行的进程 ID
编辑脚本1.sh
#!/bin/bash echo "print $" echo "1、打印脚本文件名$0" echo -e "$0 = $0 " echo "2、打印第一个命令行参数$1" echo -e "$1 = $1 " echo "3、打印第二个命令行参数$2" echo -e "$2 = $2 " echo "4、打印命令行参数个数$#" echo -e "$# = $# " echo "5、打印所有命令行参数[email protected]" echo -e "[email protected] = [email protected] " echo "6、打印所有命令行参数" echo -e "$* = $* " echo "7、打印前一个命令的退出状态" echo -e "$? = $? " echo "8、打印执行的进程ID" echo "$$ = $$"
执行结果:
print $ 1、打印脚本文件名1.sh $0 = 1.sh 2、打印第一个命令行参数1 $1 = 1 3、打印第二个命令行参数2 $2 = 2 4、打印命令行参数个数4 $# = 4 5、打印所有命令行参数1 2 3 4 [email protected] = 1 2 3 4 6、打印所有命令行参数 $* = 1 2 3 4 7、打印前一个命令的退出状态 $? = 0 8、打印执行的进程ID $$ = 30839
以上是关于Shell 编程详解的主要内容,如果未能解决你的问题,请参考以下文章