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、$@ :所有命令行参数
    e、$* :所有命令行参数
    f、$? :前一个命令的退出状态,可用于获取函数返回值
    g、$$ :执行的进程 ID

    编辑脚本1.sh

#!/bin/bash 

echo "print $"

echo "1、打印脚本文件名$0"
echo -e "\$0 = $0 \n"

echo "2、打印第一个命令行参数$1"
echo -e "\$1 = $1\n"

echo "3、打印第二个命令行参数$2"
echo -e "\$2 = $2\n"

echo "4、打印命令行参数个数$#"
echo -e "\$# = $#\n"

echo "5、打印所有命令行参数$@"
echo -e "\$@ = $@\n"

echo "6、打印所有命令行参数"
echo -e "\$* = $*\n"

echo "7、打印前一个命令的退出状态"
echo -e "\$? = $?\n"

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
$@ = 1 2 3 4

6、打印所有命令行参数
$* = 1 2 3 4

7、打印前一个命令的退出状态
$? = 0

8、打印执行的进程ID
$$ = 30839

猜你喜欢

转载自www.cnblogs.com/Presley-lpc/p/10266084.html