Linux基础知识(15): Shell编程——变量


注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/106248606


1 变量概述

Shell与其他语言相比:

  1. php和jave主要实现功能;
  2. Shell可以简化管理操作;

变量是计算机内存的单元,其中变量存放的值可以改变;
通俗的说,变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,方便实用


变量的命名规则
(1) 变量必须以字母或下划线开头、变量名中间的只能由字母、数字和下划线组成;
(2) 变量名的长度不得超过255个字符;
(3) 变量名在有效的范围内必须是唯一的;

注:在Shell中,变量的默认类型是字符类型。



2 变量的分类

Shell变量可以分为用户自定义变量、环境变量、未知参数变量、预定义变量
(1) 用户自定义变量:用户自己定义的变量。
(2) 环境变量:主要保存和系统相关的数据。环境变量可以自定义,但是对系统生效的环境变量名和变量的作用是固定的。
(3) 位置参数变量:主要是用来向脚本中传递参数或数据,变量作用是固定的。该变量名不能自定义。
(4) 预定义变量:是Shell中已经定义好的变量,变量作用是固定的。该变量名不能自定义。




3 用户自定义变量

3.1 变量定义

变量定义命令格式为: 变量名=变量值
例如:x=5
name= “xiao ming” #注意符号“=”有空格

在这里插入图片描述



3.2 变量调用

变量调用命令格式为:echo $变量名

例如:

echo $x
echo $name

在这里插入图片描述


注:变量的默认类型为字符型


在这里插入图片描述



3.3 变量叠加

变量的叠加命令格式为: 变量名2=”$变量名1”叠加内容
或者为:变量名2=${变量名1}叠加内容

在这里插入图片描述



3.4 变量查看

查询系统所有定义的变量的命令为:set

在这里插入图片描述

使用命令:set -u 表示调用未声明的变量时会系统报错



3.5 变量删除

变量删除命令格式: unset 变量名

在这里插入图片描述




4 环境变量

环境变量和用户自定义变量的区别:

  1. 用户自定义变量只在当前的Shell中生效;
  2. 环境变量在当前Shell和这个Shell的所有子Shell中生效。

注意: 变量可以自定义,但是对系统生效的环境变量名和变量的作用是固定的。


定义环境变量的命令格式:export 变量名=变量值

或者:

变量名=变量值
export 变量名

在这里插入图片描述


然后进入到子bash中,然后通过命令 pstree 查看


在这里插入图片描述


然后使用命名 set 来查看所有变量名,只能看到环境变量y和z,变量x不在当前bash中。


在这里插入图片描述


  1. set 命令查看所有变量
  2. env 命令查看环境变量

在这里插入图片描述


退出子bash使用命令:exit


在这里插入图片描述


常用的环境变量如下图所示:


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



(1) PATH环境变量
PATH环境变量用于系统查找命令的路径
通过命令 echo $PATH 可以查看PATH环境变量

在这里插入图片描述


可以通过命令:PATH=”$PATH”:/root/sh 添加路径。
这种方法知识临时生效,系统重启将失效,想要永久生效,必须写入到环境变量的生效文件中。



(2) PS1环境变量
PS1环境变量用于命名提示符设置,其各个符号的作用如下所示:

在这里插入图片描述


在这里插入图片描述




5 语系变量

查询当前语系变量的命令为: locale

在这里插入图片描述


如上图所示,其中
LANG 表示系统主语系的变量;
LC_ALL 表示整体语系的变量;
通过命令 echo $LANG 可以查看系统当前语系


在这里插入图片描述


通过命令 locale -a|more 可以查看Linux支持的所有语系,如下图所示:


在这里插入图片描述




6 位置参数变量

在这里插入图片描述


(1) $n

例如,求两个变量的和

在这里插入图片描述


代码

#!/bin/bash

num1=$1
num2=$2
sum=$(($num1 + $num2))
echo $sum

在这里插入图片描述



(2) $*, $@$#


代码

#!/bin/bash

echo "参数为:$*"

echo "参数也为:$@"

echo "参数个数为:$#"

在这里插入图片描述



(3) $*$@ 的区别

在这里插入图片描述



代码

#!/bin/bash

for i in "$*"
        do
                echo $i
        done

echo ------------------

for j in "$@"
        do
                echo $j
        done

在这里插入图片描述





7 预定义变量


在这里插入图片描述


(1) $?

在这里插入图片描述



(2) $$$!

在这里插入图片描述





8 接收键盘输入——read命令

read命令用于接收键盘输入的字符,其命令格式为:

read 选项 变量名

其中参数选项及其作用分别为:
1) -p 表示提示信息,在等待read输入时,输出提示信息;
2) -t 表示等待的秒数,read命令会一直等待用户输入,用户可以设置等待的时间;
3) -n 表示接收指定的字符数,当接收到指定的字符数时,命令直接执行;
4) -s 表示隐藏输入的数据,适用于密码等信息的输入;



例1 使用参数-p


代码1

#!/bin/bash

read -p "请输入你的名字:" name
echo 你的名字为:"$name"

在这里插入图片描述



例2 使用参数-s

代码2

#!/bin/bash

read -p "请输入你的名字:" name
echo 你的名字为:"$name"
read -p "请输入登录密码:" -s passwd 
echo -e "\n"
echo $passwd

在这里插入图片描述



例3 使用参数-n

代码3

#!/bin/bash

read -p "请输入你的名字:" name
echo 你的名字为:"$name"

read -p "请输入登录密码:" -s passwd
echo -e "\n"
echo 输入的密码为:"$passwd"

read -p "请输入一个字符:" -n 1 x
echo -e "\n"
echo 输入的字符为:"$x"

在这里插入图片描述






参考资料

[1] shell编程之变量



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章