shell(二)变量使用

87 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

上讲我们对shell有了基本的认识,其中我们用两个例子说明了shell的解释的基本执行,以及shell的逻辑处理能力,今天我们继续看下shell是如何对我们的变量进行处理的;

定义变量

变量是可以内部定义,也可以外部定义的,内部定义我们可以看作默认值,定义过后的引用就是用${}符号来进行引用,有人可能是直接引用,不推荐哈,还是规范编程比较好,我们看个用例,这里把外部读取变量值先写出来,新建一个test文件,,下面代码的意思是我们判断外部变量是否为空,不为空则覆盖默认值,这里注意,我上讲说写shell多加空格,这里赋值可不要给空格

#!/bin/bash
myVal="123"
echo "${myVal}!"
if [ ${1} ]
then
        myVal=${1}
        echo "${myVal}!"
fi

最后的输出结果是:

运行时赋值变量

我们看的几个用例都是写在启动的时候赋变量值的,那有没有程序执行的时候根据脚本的提示来进行输入控制呢?当然可以,我们这里需要用到read关键字,它表示读取输入的值,具体看用例:该用例表示根据提示输入值,然后输出;这里的-p就相当于输出提示,可用echo代替;

read -p "请输入你的编号:"  input
echo "输入的编号是:${input}"

结果是:

这里注意的是如果我需要读取多个值呢?那就改成

read -p "请输入你的编号:"  input1 input2

然后输入的时候中间用空格分割

只读变量

为此shell还弄出了只读变量,字面意思,就是不可修改的变量,用readonly表示,我们看下用例加深印象;

#!/bin/bash
readonly i="我"
i=${1}
echo ${i}

他会提示:readonly.sh: line 3: i: readonly variable

表示这是一个只读变量;

还有一个删除变量,就表示把这个变量删除,不知道有啥意义,我们这里就不介绍了,有兴趣自行了解下;

环境变量

说到这,我们经常能看到比如我们想输出java的环境路径,我们直接echo ${JAVA_HOME}就可以查到了,这个是怎么做到的呢,毕竟我们只是设置了一下,这里就要引入我们的环境变量了,我们每次修改完etc下面的profile配置文件时都要用source 文件名执行下,这就相当于写入环境变量了,我们也来自己写个配置变量,让其变为环境变量,这里的关键字是export,大家可以看看profile里是不是很多这个关键字;

#!/bin/bash
export appname="阿里云Ubuntu7"

然后我们执行下这个配置,结果是

好了,一个环境变量就在我们的服务器上,下次我们在其他的shell文件中也可以直接通过${}来获取这个定义的值,是不是很方便呢?下一篇,shell-认识字符;好啦🥗🥗🥗;

结束结束,那就🛴🛴🛴