zoukankan      html  css  js  c++  java
  • SHELL 的初识

    一、SHELLD的介绍 

       Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive). 
    Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

    Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

    二、shell的赋值

      1).直接赋值,注意等号两边不能有空格,如赋值为数字则不需要""

    [root@SHELL ~]# name="wo shi ni baba"
    [root@SHELL ~]# echo $name
    wo shi ni baba
    

      2).输入赋值,read 后接变量名,回车后输入什么 变量值就是什么

    [root@SHELL ~]# read name 
    wo
    [root@SHELL ~]# echo $name
    wo

      3).赋值等于变量,将一个变量的值赋予另一个变量,原变量更改值后,新变量不变

    [root@SHELL ~]# name="baba"
    [root@SHELL ~]# name1="yeye"
    [root@SHELL ~]# echo $name
    baba
    [root@SHELL ~]# echo $name1
    yeye
    [root@SHELL ~]# name=$name1
    [root@SHELL ~]# echo $name
    yeye

     [root@SHELL ~]# echo $name
     yeye
     [root@SHELL ~]# echo $name1
     yeye
     [root@SHELL ~]# name1="nainai"
     [root@SHELL ~]# echo $name
     yeye
     [root@SHELL ~]# echo $name1
     nainai

    三、内置变量$

      1)$0 返回值为执行的路径

    [root@SHELL scripts]# pwd      #创建一个路径专门放脚本
    /server/scripts
    [root@SHELL scripts]# cat test.sh     
    #!/bin/sh
    #from zhang
    echo $0
    [root@SHELL scripts]# sh test.sh
    test.sh
    [root@SHELL scripts]# sh /server/scripts/test.sh
    /server/scripts/test.sh
    [root@SHELL scripts]#

      2)$n  传参 外面传的参数 赋值给内部,位置一一对应

    [root@SHELL scripts]# cat test.sh
    #!/bin/sh
    #from zhang
    echo $1
    echo $2
    echo $3
    [root@SHELL scripts]# sh test.sh 1 2 3
    1
    2
    3
    [root@SHELL scripts]# sh test.sh a s d
    a
    s
    d
    [root@SHELL scripts]#

      3)$# 统计变量值的字符串长度,包括空格

    [root@SHELL scripts]# name="woshinibaba"
    [root@SHELL scripts]# echo $name
    woshinibaba
    [root@SHELL scripts]# echo ${name}
    woshinibaba
    [root@SHELL scripts]# echo ${#name}
    11
    [root@SHELL scripts]# name="wo shi ni baba"
    [root@SHELL scripts]# echo ${#name}
    14
    [root@SHELL scripts]#

      4)$?返回脚本内命令执行是否正确,正确返回零 不正确返回任意数

    [root@SHELL scripts]# cat test.sh
    #!/bin/sh
    #from zhang
    echo $0
    echo $?
    teaa   #未知的命令
    echo $?
    [root@SHELL scripts]# sh test.sh
    test.sh
    0  #上一条执行成功返回0
    test.sh: line 5: teaa: command not found
    127  #未知的命令 返回任意数
    [root@SHELL scripts]#

      5)$$ 获取脚本的PID 

    [root@SHELL scripts]# sh test.sh
    test.sh
    0
    test.sh: line 5: teaa: command not found
    127
    [root@SHELL scripts]# echo $$ > 1.txt
    [root@SHELL scripts]# cat 1.txt
    2766
    [root@SHELL scripts]# ps -ef | grep 2766
    root       2766   2762  0 14:33 pts/0    00:00:00 -bash
    root       4622   2766  0 19:48 pts/0    00:00:00 grep 2766

    四、变量的子串

      1).切片,第一个数字表示从谁开始,第二个数字表示往后几个字符

    
    

     [root@SHELL scripts]# name="wo shi ni baba"
     [root@SHELL scripts]# echo $name
     wo shi ni baba

     [root@SHELL scripts]# echo ${name:0:2}

    wo
    [root@SHELL scripts]# echo ${name:3:2}
    sh
    [root@SHELL scripts]# echo ${name:3:3}
    shi
    

      2).变量子串匹配()

    [root@SHELL scripts]# url=www.sine.com
    [root@SHELL scripts]# echo ${url#*.}  #(#表示以谁开头 *数量贪婪,多个的意思 .表示 ".")
    sine.com
    [root@SHELL scripts]# echo ${url%.*}  #(#表示以谁结尾 其余与上面一直 )
    www.sine
    [root@SHELL scripts]#

      3).变量子串的替换 /表示惰性匹配,//表示贪婪匹配  

    [root@SHELL scripts]# echo ${url}
    www.sine.com
    [root@SHELL scripts]# echo ${url/w/a}
    aww.sine.com
    [root@SHELL scripts]# echo ${url}
    www.sine.com
    [root@SHELL scripts]# echo ${url//w/a}
    aaa.sine.com
    [root@SHELL scripts]#
  • 相关阅读:
    IOS sqlite数据库增删改查
    宏定义偷懒型set,get
    创业白手起家也须要条件——北漂18年(14)
    Python模拟登录wap版百度贴吧+自己主动回贴
    纯CSS制作冒泡提示框
    tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——移植u-boot.bin(打印串口控制台)
    ZOJ 3587 扩展KMP
    用选择法对10个整数按从小到大排序(数组)
    设计一个算法,推断一个二叉树是否为全然二叉树
    Hibernate学习笔记(八) — 懒载入与抓取策略
  • 原文地址:https://www.cnblogs.com/qiang-qiang/p/10651179.html
Copyright © 2011-2022 走看看