zoukankan      html  css  js  c++  java
  • shell编程

    shell脚本程序不是很复杂,他是按行解释的,脚本程序总是以

    #!/bin/sh

    开始,他通知shell使用系统上的Bourne shell解释器。其中#是注释。

    当编辑好脚本程序后,要使脚本程序可执行,只需修改脚本程序的权限,命令如下:

    chmod +x filename

    然后输入:

    ./filename

    来执行脚本程序。

    一个简单的例子:

    $cat first

    #!/bin/sh

    echo "you are welcome to use bash."

    echo "current work directory is $PWD"

    echo "you are $LOGNAME"

    增加执行权限:chomod +x first

    开始运行脚本程序:./first

    执行结果:

    you are welcome to use bash.

    current work directory is /home/wangfangyong/shell

    you are wangfangyong

    程序中echo用于输出;

    可以定以变量,如:h=100定义变量h并赋值100,可以用echo输出单个变量,如echo ${h}可以输出h变量;

    使用unset命令清除变量,如unset h就可以清除h变量;

    使用set命令可以显示所有本地定义的shell变量;

    结合变量:如变量h=“hello”变量w="world",结合h和w两个变量方法为:echo ${h}${w},输出结果为:hello world

    测试变量是否已经设置:${variable:-value}如果设置了变量值,则使用它;如果没有则取新值,如:

    colour=blue

    echo "this colour is ${colour:-green}"

    结果为:this colour is blue

    现在清除该值,再来看看结果:

    unset colour

    echo "this colour is ${colour:-green}"

    echo ${colour}

    结果为:this colour is green

    输出colour失败,原因是${colour:-green}并没有把实际值传给变量,需要使用${variable:=value}才能完成此功能:

    unset colour

    echo "this colour is ${colour:=green}"

    echo ${colour}

    结果为:this colour is green

           green

    设置只读变量,格式如下:

    variable-name=value

    readonly variable-name  如:

    max=65535

    readonly max

    echo ${max}

    将max设置成一个常量且设为只读;要查看只读变量,可以使用命令:readonly。

    设置环境变量:

    VARIABLE-NAME=value

    export VARIABLE-NAME

    显示环境变量(与显示本地变量一样):

    MYSHELL=‘bash’

    export MYSHELL     #设置环境变量

    echo ${MYSHELL}   #显示环境变量

    使用env命令可以查看所有的环境变量;同样可以使用unset命令清除环境变量:unset MYSHELL;set -a 可以指明所有变量直接被导出,如:

    cat wangfangyong.profile

    set -a

    MAIL='/var/spool/mail/wangfangyong'

    PATH=$HOME:$PATH

    可以使用export命令将定义过的变量导出到子进程,只要使用export命令导出变量,就可以在任意多的脚本中使用该变量,他们均继承导出变量的所有权,当然不可以将变量从子进程导出到父进程,但可以通过重定向做到。

    还可以通过shell向系统命令传递参数,shell中有7个特定变量:

    $#:传递到脚本的参数个数;$*:以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可以超过9个;$$:脚本运行的当前进程id号;$!:后台运行的最后一个进程的id号;$@:与$#相同,但是使用时加引号,并在引号中返回每个参数;$-:显示shell使用的当前选项,与set命令功能相同;$?:显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误。

  • 相关阅读:
    bzoj4849: [Neerc2016]Mole Tunnels
    bzoj 4069~4071 APIO2015
    bzoj 4885: [Lydsy2017年5月月赛]长方体
    bzoj4891: [Tjoi2017]龙舟
    bzoj4892: [Tjoi2017]dna
    bzoj 3159: 决战
    bzoj3672: [Noi2014]购票
    bzoj4738: 汽水
    bzoj 4737: 组合数问题
    bzoj 4872: [Shoi2017]分手是祝愿
  • 原文地址:https://www.cnblogs.com/276815076/p/1841580.html
Copyright © 2011-2022 走看看