zoukankan      html  css  js  c++  java
  • shell学习之路二

    Shell变量

    变量说明:

    • 变量名和等号之间不能有空格

    • 命名只能用英文字符、数字和下划线,收个字符不能以数字开头

    • 中间不能有空格,可以使用(_)下划线

    • 不能使用标点符号

    • 不能使用bash中的关键字(help命令查看保留关键字)

    定义:

     your_name="Joey.com"  # key value 对

      ?var=123
      user*name=runoob
      #除了显式地直接赋值,还可以用语句给变量赋值
      for file in `ls /etc`
      for file in $(ls /etc) #以上语句将 /etc 下目录的文件名循环出来。

    使用变量:

    #使用一个定义过的变量,只要在变量前面加上美元符号即可
    your_name="hechanghang"
    echo $your_name
    echo ${your_name}  #变量名外面的花括号是可选的,加不加都行
    for skill in Ada Coffe Action Java;do
        echo "I am a good at ${skill}Script"
    done   #为了帮助解释器识别变量的边界

    # 已定义的变量可以被重新定义:

    your_name="tom"
    echo $your_name
    your_name="Rose"
    echo $your_name

    使用readyonly命令可以将变量定义为只读变量(只读变量不能改变)

    #!/bin/bash
    myUrl="http://www.hchlyf.com"
    readyonly myUrl
    myUrl="http://www.hc.com"
    #运行脚本结果:/bin/sh:NAME:This is variable is read only

    删除变量

    unset vaiable_name
    #被删除后的变量不能被再次使用
    #unset命令不能删除只读变量
    
    #!/bin/sh
    myUrl="http://www.hchlyf.com"
    unset myUrl
    echo $myUrl    #无任何输出

    变量类型:

    • 局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

    • 环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

    • Shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    • 预定义变量:
      •   $?    执行上一个命令的返回值 执行成功,返回0,执行失败,返回非0(具体数字由命令决定)
      •   $$    当前进程的进程号(PID),即当前脚本执行时生成的进程号
      •        $!     后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程 &
          
    • 位置参数变量: 
      • $n | n为数字,$0代表命令本身,$1-$9代表第一到第9个参数, 十以上的参数需要用大括号包含,
        如${10}。
      • $* | 代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数
      • $@ | 代表命令行中的所有参数,把每个参数区分对待。以"$1" "$2" … "$n" 的形式输出所有参数
      • $# | 参数的个数
    • env:查看所有的环境变量

    • vim /etc/profile:编辑环境变量;

    • 注意:编辑过环境变量后需要使用:sourse /etc/profile来使环境变量生效

    #java environment;Java环境变量的设置
    export JAVA_HOME=/export/servers/jdk1.8.0_241
    export PATH=:$JAVA_HOME/bin:$PATH

    Read 命令

    read [选项] 值
    read -p(提示语句) -n(字符个数) -t(等待时间,单位为秒) –s(隐藏输入)
     
    相当于java中的scanner,用户输入, 从程序外部接收参数
      1.在输入时,如果输错了要删除要执行control+delete
      2.不要输入中文
      3.NAME与"之间要有空格
    read –t 30 –p “please input your name: ” NAME
    echo $NAME
    read –s –p “please input your age : ” AGE
    echo $AGE #注意:如果隐藏输入,这里的结果是看不到的 read –n 1 –p “please input your sex [M/F]: ” GENDER
    echo $GENDER
  • 相关阅读:
    linux使用jstack来找出死循环的java代码
    Dubbo的几种序列化协议
    上传新项目到GitLab
    PI Network项目,手把手教快速挖Pi币
    Oracle数据导出、导入
    如何实现表单标题两端对齐
    cookie 操作记录& vuex 中页面刷新 state 数据丢失的问题
    FCSAN存储与服务器关联映射后在服务器端如何识别操作
    修改密码报-bash: !@#***": event not found
    springboot整合logstash
  • 原文地址:https://www.cnblogs.com/joey-413/p/13953044.html
Copyright © 2011-2022 走看看