shell脚本使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/crazy_scott/article/details/82904698

介绍Shell脚本在Linux下的使用。

步骤

  • shell脚本能提高用户操作和管理员进行系统管理的效率
  • 一般步骤
    1. 编辑器编写脚本程序
    2. shell做解释程序,非交互地执行脚本,两种执行方式:
      • sh命令执行脚本文件
      • 给脚本文件添加执行权限,用./命令执行

基本元素

  1. #! /bin/bash必须的,指出shell的类型
    • 也可以指定python执行
  2. #表示注释
  3. 变量

特殊符号

  1. 注释符#

    除了#!/bin/bash里的#特殊

  2. 美元符
    变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来

  3. 单引号

    被引起的字符全部做普通字符

    echo ‘my $SHELL’

  4. 双引号

    引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。

  5. 倒引号(数字1键旁边的那个键)

    引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。

  6. 反斜杠

    是转义字符,把特殊字符编程普通字符。但在单引号内的字符都为普通字符。

    53794134160

变量

shell变量可以保存如路径名、文件名或者一个数字。

变量类别

  • 本地变量/局部变量
    • 只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。
  • 环境变量
    • 可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们 。还能在shell中加以修改。
  • 内部变量
    • 由系统提供的。与环境变量不同,但用户不能修改它们。
  • 位置参数
    • 在使用函数时,可以使用1、2、3中存放位置变量,$1,$2来访问。

变量声明和使用

  • 变量名=值
    • 等号两边不可以有空格,变量区分大小写字母。
  • 变量的引用
    • $变量名
    • ${变量名}
  • 清除变量
    • unset 变量名
    • 注意,此时不需要$符号
  • 显示本地所有变量
    • set
  • 设置只读变量
    • randonly 变量名

环境变量

  • 环境变量可以在命令行中设置,但用户注销时这些值将丢失
  • 环境变量均为大写
  • 必须用export命令导出
  • 显示环境变量
    • env
  • 常见环境变量
    • HOME
    • SHELL
    • PWD:用户当前工作目录的路径
    • HISTSZIE:历史命令
    • PATH:执行文件搜索的路径

配置文件

  • 让环境变量的修改在退出shell再次登录仍然有效,需要在配置文件中修改
    • 53794207876
  • /etc/profile
    • 存放一些全局(共有)变量,不管哪个用户,登录时都会读取该文件。通常设置一些Shell变量PATH,USER,HOSTNAMEHISTSIZE
    • 登录Linux先启动系统配置文件/etc/profile,并从/etc/profile.d目录的配置文件中搜集shell的设置,为系统的每个用户设置环境信息。
  • ~/.bash_profile
    • 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
  • ~/.bashrc
    • 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。同时,会调用/etc/bashrc
  • /etc/bashrc
    • 为每一个运行bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。
  • 按照传统,定义的变量如PATH放到.bash_profile中,而像别名函数等放在.bashrc中,但是.bash_profile先于.bashrc读取内容,也可全放入.bashrc

设置自己的环境变量

  • /home/user/.bash_profile中定义下句,会怎样?
    • alias la=‘ls –a|grep “.*”’
  • user下次再登陆,其shell会自动建立一个别名命令la,功能为查看当前目录下名字以.开头的文件。
  • 写在~/.bash_profile中,需重新登录才能有效。除非运行source .bash_profile使其立即有效。
  • 写在~/.bashrc中,则打开新的终端中就有效

tips

  1. 两种执行方式
    • 给文件执行权限,例如chmod 755 run.sh
      • 然后使用./run.sh即可运行
    • sh 文件名
      • sh run.sh
  2. 特殊内部变量
    • $#
      • 传给shell程序的位置参数的数量
    • $?
      • 最后命令的完成码或者在shell程序内部执行的shell程序
    • $0
      • shell程序的名称
    • $*
      • 调用shell程序时所传送的全部参数的单字符串
    • $n
      • 第n个参数
    • $$
      • 本程序的PID
    • $!
      • 上一个命令的PID

一般结构

函数

使用函数(注意,直接写函数名,不用写function

#!/bin/bash                           
#a simple shell script example
#a function
sayhello() {
    echo "Enter Your name:"
    read name          
    echo "Hello $name"
}
echo "programme starts here..."  
sayhello
echo "programme ends."

变量表达式

  1. 条件判断命令test

    test n1 -参数 n2

    可等价于[ n1 -参数 n2]

猜你喜欢

转载自blog.csdn.net/crazy_scott/article/details/82904698