zoukankan      html  css  js  c++  java
  • shell脚本基础

    shell脚本基础

    1. 语法基本介绍

    1.1 开头

    程序必须以下面的行开始(必须方在文件的第一行):

    #!/bin/sh

    符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

    当编辑好脚本时,如果要执行该脚本,还必须使其可执行。

    要使脚本可执行:

    编译 chmod +x filename 这样才能用./filename 来运行

    1.2 注释

    在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。

    如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。

    1.3 变量

    在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明

    2. 写脚本的注意事项

    1. 脚本开头第一行必须是#!/bin/bash
    2. 脚本要有执行权限
    3. 思路要清晰,不要写无关的东西
    4. 开两个终端,一个编写脚本,一个测试功能
    5. 禁止将未执行的代码放入脚本中
    6. 脚本当中的命令要是有绝对路径
    7. 脚本中定义的变量和注释要见名知意

    3. 变量

    3.1 什么是变量

    变量就是可以变化的量,不是一个固定的值

    3.2 变量名称注意事项

    • 只能包含字母、数字、下划线,并且不能以数字开头
    • 不应该跟系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要用“_”下划线开头
    • 最好做到见名知义
    • 不能使用程序中的保留字,例如if、for等

    3.3 变量类型

    • 字符型
    • 数值型
    • 整型
    • 浮点型
    • 布尔型

    3.4 变量操作

    • 设置变量
    • 引用变量
    • 撤销变量

    单引号与双引号的区别

    [root@localhost ~]# a=1
    [root@localhost ~]# echo $a
    1
    [root@localhost ~]# echo '$a'
    $a
    [root@localhost ~]# echo "$a"
    1
    [root@localhost ~]# echo {$a}b
    {1}b
    

    3.5 base变量类型

    • 环境变量
    • 本地变量(局部变量)
    • 位置变量
    • 特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)

    3.5.1 本地变量

    VAR_NAME=VALUE      //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效
    
    local VAR_NAME=VALUE    //局部变量,作用域为当前代码段,常用于函数
    
    #示例
    [root@localhost ~]# a=1
    [root@localhost ~]# echo $a
    1
    
    #新开一个终端
    [root@localhost ~]# echo $a
    
    [root@localhost ~]# 
    

    3.5.2 环境变量

    由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。

    export VAR_NAME=VALUE   //作用域为当前shell进程及其子进程
    

    3.5.3 位置变量

    $1,$2,$3,....       //用来引用脚本的参数
        shift [num]         //位置变量使用完以后退出,后面的参数向前推进
    
    #示例
    [root@localhost ~]# cat test.sh 
    #!/bin/bash
    
    for i in $*;do
        echo $1
        shift 3
    done
    [root@localhost ~]# bash test.sh 1 2 3 4 5 6 7 8 9 11 12 13 
    1
    4
    7
    11
    
    ...
    

    3.5.4 特殊变量

    $#      //是传给脚本的参数个数
    $0      //是脚本本身的名字
    $!      //是shell最后运行的后台Process的PID
    $@      //是传给脚本的所有参数的列表
    $*      //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$      //是脚本运行的当前进程ID号
    $?      //是显示上条命令的退出状态,0表示没有错误,其他表示有错误
    
  • 相关阅读:
    Unity3d:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1
    Unity3d:The requested item has been unloaded
    installshield 注册dll
    sql查找字符串是否包含字符
    asp获取勾选checkbox的值
    Pyqt5.2.1生成的.ui文件转换成.py
    scrapy爬虫的编写步骤
    IBM MQ 集成CXF 发送JMS 消息
    io输出流变为输入流
    hibernate flush clear的区别
  • 原文地址:https://www.cnblogs.com/leixixi/p/14611328.html
Copyright © 2011-2022 走看看