Linux编程之变量

Bash变量与变量分类

变量命名规则linux

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

    变量按照存储数据分类ubuntu

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

shell变量分类dom

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

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

变量定义
变量名=变量值     # 等号左右不能有空格
如 name=tom

变量调用
echo $变量名

变量叠加
x=123
x="$x"456
x=${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 | more
LANG    定义系统主语序的变量
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
相关文章
相关标签/搜索