Shell脚本基础

Shell脚本

Shell脚本概述

shell的两层含义:
既是一种应用程序,又是一种程序设计语言
作为应用程序:
交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能。
作为程序设计语言:
它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支完成类似于windows下批处理操作,简化我们对系统的管理与应用程序的部署。

Shell命令解析器

作为应用程序时:
◆称之为shell命令解析器,shell是用户和Linux内核之间的接口程序,用户在提示符下输入的命令都由shell先解释然后传给Linux核心;它调用了系统核心的大部分功能来执行程序、并以并行的方式协调各个程序的运行。
◆Linux系统中提供了好几种不同的shell 命令解释器,如sh、ash、bash等;
◆般默认使用bash作为默认的解释器;
◆我们后面编写的shell脚本,都是由上述shell命令解释器解释执行的。

Shell脚本

作为程序设计语言时:
◆称之为shell脚本,我们学过的c/c++等语言,属于编译性语言(编写完成后需要使用编译器完成编译、汇编、链接等过程变为二进制代码方可执行) ;
◆shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行。
◆shell脚本主要用于:
帮助开发人员或系统管理员将复杂而又反复的操作放在一个文件中,通过简单的一步执行操作完成相应任务,从而解放他们的负担。

Shell语法

shell脚本的定义:

  1. #!/bin/sh
    "#!"用来声明脚本由什么shell解释,否则使用默认shell
  2. 单个"#“号代表注释当前行,相当于C C++中的”\"
    shell脚本的执行:
    chmod +x test.sh;./test.sh#1.增加可执行权限2.执行
    bash test.sh #直接指定使用bash解释test.sh
    . test.sh(source test.sh) #调用默认shell解释test.sh
    三种执行脚本的方式不同点:
    ◆./和bash执行过程基本一致,后者明确指定bash解释器去执行脚本,脚本中#!指定的解释器不起作用,前者首先检测#!,使用#!指定的shell,如果没有使用默认的shell;
    ◆用./和bash去执行会在后台启动一个新的shell去执行脚本用.去执行脚本不会启动新的shell,直接由当前的shell去解释执行脚本。

变量

自定义变量

◆定义变量:
num=10变量名=变量值如:
◆引用变量:
i=$num 格式:$变量名 #把变量num的值付给变量i
◆显示变量:
echo $num使用echo命令可以显示单个变量取值
◆清除变量:
unset varname 使用unset命令清除变量
◆输入变量
read string 从键盘输入一个字符串付给变量string,若string没定义则先定义在使用
◆定义只读变量
readonly var=100 定义一个只读变量,只能在定义时初始化,以后不能改变不能被清除
◆export变量
export var=300 使用export说明的变量,会被导出为环境变量,其它shell均可使用

变量注意事项:

  1. 变量名只能英文字母 数字下划线开头,不能以数字开头
    1_num=10 错误
    num_1=20 正确
  2. 等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号括起来;双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符。
    name=aa bb //错误用法
    name="aa bb" //正确用法
    echo "$name is me" 输出: aa bb is me
    echo '$name is me' 输出: $name is me

环境变量

◆shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,我们在shell中可以直接使用$name引用
◆定义:般在~/.bashrc或/etc/profile文件中(系统自动调用的脚本)使用export设置,允许用户后来更改 VARNAME = value ; export VARNAME
◆传统上,所有环境变量均为大写口
◆显示环境变量:使用env命令可以查看所有的环境变量。
◆清除环境变量:使用unset命令清除环境变量

常见环境变量

◆HOME:用于保存注册目录的完全路径名。
◆PATH:用于保存用冒号分隔的目录路径名, shell将按PATH变量中给出的顺序搜索这 些目录,找到的第一个与命令名称一致的可执行文件将被执行。PATH=$HOME/bin:/bin:/usr/bin;export PATH
◆HOSTNAME:主机名
◆SHELL:默认的shell命令解析器
◆LOGNAME:此变量保存登录名
◆PWD:当前工作目录的绝对路径名

预定义变量

◆$ #:传给shell脚本参数的数量
◆$*:传给shell脚本参数的内容
◆ $1、$2、$3… … $ 9:运行脚本时传递给其的参数,用空格隔开
◆$ ?:命令执行后返回的状态"$?“用于检查上一个命令执行是否正确(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错)。
◆$0:当前执行的进程名
◆ $ $ :当前进程的进程号”$$"变量最常见的用途是用作临时文件的名字以保证临时文件不会重复

脚本变量的特殊用法

◆""(双引号):包含的变量会被解释
◆"(单引号):包含的变量会当做字符串解释
◆"(数字键1左面的反引号):反引号中的内容作为系统命令,并执行其内容,可以替换输出为一个变量$ echo "today is ‘date’ " today is 2012年07月29日星期日 12:55:21 CST
◆\转义字符:同c语言n It Irla等echo命令需加-e转义
◆(命令序列):由子shell来完成,不影响当前shell中的变量
◆(命令序列):在当前shell中执行,会影响当前变量

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值