zoukankan      html  css  js  c++  java
  • shell编程基本语法和变量

    一.编写shell脚本基本格式

    拿最简单的hello word举例

    .#!/bin/bash       
    echo 'hello world'
    
    • .#!/bin/bash:告诉计算机,使用bash解释器来执行代码
    • echo: 打印

    二.运行shell脚本

    方法一(推荐使用)

    chmod 777 myshell.sh
    
    #给文件权限
    
    ./myshell.sh
    
    #运行文件
    
    

    方法2

    sh myshell.sh
    

    三.注释

    单行注释
    #内容
    
    多行注释
    :<<!
    内容
    !
    

    四.定义变量

    基本语法

    1.定义变量:变量名=变量值
    2.撤销变量:unset 变量名
    3.声明静态变量:readonly 变量名     #静态变量不能unset
    
    将命令执行结果返回变量
    1.A=`ls -la` 反引号
    2.A=$(ls -la) 等价于反引号
    
    系统变量:
    	$PATH
    	$HOME
    	$PWD
    	$SHELL
    	$USER	
    

    五.设置环境变量

    基本语法

    export 变量名=变量值		将shell变量输出给环境变量
    source 配置文件名称	       让修改后的配置信息立即生效
    echo $变量值				  查看环境变量的值
    
    
    举例
    vim a.sh
    export a = 111
    :wq
    source a.sh
    echo $a
    111
    

    六.位置参数变量

    主要是给shell脚本传参数

    $n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
    
    $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
    
    $@  (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
    
    
    $#(功能描述:这个变量代表命令行中所有参数的个数)
    

    举例

    a.sh脚本里面的内容

    #!/bin/bash  
    
    echo $2   #展示第二个参数
    echo $*   #这个整体
    echo $@   #这个分开for循环中才有提现
    echo $#   #传参的个数
    

    执行

    [root@ywy ~]# sh a.sh 1 2 3
    a.sh: line 1: .#!/bin/bash: No such file or directory
    2
    1 2 3
    1 2 3
    3
    

    七.预定义变量

    就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

    $$ 	(功能描述:当前进程的进程号(PID))
    $!	(功能描述:后台运行的最后一个进程的进程号(PID))
    $?	(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行失败)
    

    八.变量的基本运算

    
    

    运算表达式

    1.$((运算式))  #$((1+1)) 不要有空格
    2.$[运算式]   #$[1+1]  不要有空格
    上面两种运算符号都是普通的不要注释掉
    
    
    这种比较特别
    3.`expr m + n`  #`expr 1 + 1`  运算符之间必须要有空格 
    +   #加
    -   #减
    /   #除
    %   #取余
    *  #乘
    (	)  #括号
    
  • 相关阅读:
    ObjectiveC初步研究 实现文件(Implementation File)
    SQL技巧(二) CTE(公用表达式)初步接触
    ObjectiveC编程基础
    Linux编程 使用C在mysql中插入数据
    办理户口
    修改kernel内核HZ频率没有效果问题
    如何从湖北省人才市场将户口迁移出来?
    查看 各种寄存器值的 内核模块 C语言
    SDRAM AND SRAM
    linux2.6.26内核中ARM中断实现详解(转)
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11845442.html
Copyright © 2011-2022 走看看