博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux编程之变量
阅读量:6278 次
发布时间:2019-06-22

本文共 3106 字,大约阅读时间需要 10 分钟。

Bash变量与变量分类

变量命名规则

  • 变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成
  • 变量名的长度不得超过255个字符
  • 变量名在有效的范围内必须是唯一的
  • 在Bash中,变量的默认类型都是字符串型

    变量按照存储数据分类

  • 字符串型
  • 整型
  • 浮点型
  • 日期型

shell变量分类

  • 用户自定义变量:变量是自定义的
  • 环境变量:这种变量中主要保存的是系统操作环境相关的数据
    变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
  • 位置参数变量:这种变量主要用来向脚本当中传递参数或数据的,
    变量名不能自定义,变量作用是固定的
  • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

Bash变量--用户自定义变量

变量定义变量名=变量值     # 等号左右不能有空格如 name=tom变量调用echo $变量名变量叠加x=123x="$x"456x=${x}789变量查看set 选项:    -u 如果设置此选项,调用未声明变量时会报错(默认无任何提示)变量删除unset 变量名    如:unset name

Bash变量 -- 环境变量

环境变量与用户自定义变量的区别    用户自定义变量只在当前的shell中生效    环境变量在当前shell和这个shell的所有子shell中生效功能说明:以树状图显示程序。语  法:pstree [-acGhlnpuUV][-H 
<程序识别码>
][
<程序识别码>
/
<用户名称>
参  数:-a  显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。-c  不使用精简标示法。-G  使用VT100终端机的列绘图字符。-h  列出树状图时,特别标明现在执行的程序。-H
<程序识别码>
 此参数的效果和指定"-h"参数类似,但特别标明指定的程序。-l  采用长列格式显示树状图。-n  用程序识别码排序。预设是以程序名称来排序。-p  显示程序识别码。-u  显示用户名称。-U  使用UTF-8列绘图字符。-V  显示版本信息。补充说明:pstree指令用ASCII字符显示树状结构,清楚地表达程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程 序视为基层,并显示之后的所有程序。若指定用户名称,便会以隶属该用户的第一个程序当作基层,然后显示该用户的所有程序。设置环境变量export 变量名=变量值或变量名=变量值export 变量名查看环境变量set #查看所有环境变量env #查看环境变量调用变量echo $变量名 # 如 echo $name删除变量unset 变量名 # 如 unset name

PATH环境变量

PATH变量:系统查找命令的路径echo $PATH      #查看PATH环境变量PATH="$PATH":/root/sh     #增加PATH变量的值,等号两边不能有空格

PS1 环境变量

PS1变量:命令提示符设置    \d:显示日期,格式为“星期 月 日”    \H:显示完整的主机名。如默认主机名“localhost.localdomain"    \t:显示24小时制时间,格式为 “HH:MM:SS”    \A:显示24小时制时间,格式为 “HH:MM”    \u:显示当前用户名    \w:显示当前所在目录的完整名称    \W:显示当前所在目录的最后一个目录    \$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”

bash语序变量

locale# 查询当前系统语序变量locale -a  #查看所有语系locale -a | moreLANG    定义系统主语序的变量LC_ALL  定义整体语序的变量echo $LANG      #查看当前语系变量    echo $LC_ALL    #查看整体语序的变量cat /etc/sysconfig/i18n     #查询系统默认语系cat /etc/default/locale     #ubuntu系统下默认语言的文件linux中文支持前提条件,正确安装的中文字体和中文语系:    如果有图形界面,可以正确支持中文显示    如果使用第三方远程工具,只要语系设置正确,可以支持中文显示    如果使用纯字符界面,必须使用第三方插件(如zhcon等)

位置参数变量

$n:n为数字,$0代表命令本身,$1-$9代表第一道第九个参数,    十个以上的参数需要用大括号包含,如${10}$*:这个变量代表命令行中所有的参数,$*把所有参数看出一个整体$@:这个变量也是代表命令行中所有参数,不过$@把每个参数区分对待$#:这个变量代表命令行中所有参数的个数
#!/bin/bash    #加减乘除 (+-*/)    x1=$1    operator=$2    x2=$3    echo "x1" $operator  "x2 = " $(($x1 $operator $x2))
#!/bin/bash    for i in "$*"   #$*中所有参数看成一个整体,所以for循环只执行一次        do            echo "The parameters is: $i"        done    for y in "$@"   #$@中的每个参数是独立的,因此“$@”中有几个参数,就会执行几次        do             echo "Parameter:$y"        done    echo $#

预定义变量

$?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;    如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。$$:当前进程的进程号(PID)$!:后台运行的最后一个进程的进程号(PID)
echo $$     #返回当前进程号 7588    ps aux | grep 7588
#!/bin/bash    echo "current PID: $$"    find / -name hello.sh &     #&为放入后台    echo "backgroud: $!"
接受键盘输入read [选项] [变量名]选项:    -p:“提示信息”:在等待read输入时,输出提示符信息    -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间    -n 字符个数:read命令只接受指定的字符数,就会执行    -s:隐藏输入的数据,适用于机密信息的输入
#!/bin/bash    read -p "please input your name: " -t 30 name    echo -e "\n$name"        read -p "please input your passwd: " -s passwd    echo -e "\n$name"        read -p "please input your angend [M/F]: " -n 1 sex    echo $sex

转载于:https://www.cnblogs.com/tjuyuan/p/6709313.html

你可能感兴趣的文章
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
java 用反射简单应用,将Object简单转换成map
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>