上一篇我们了解了什么是shell,并且创建了第一个shell脚本程序,输出了hello linux。那么shell具体的命令和应用有哪些呢?让我们继续来学习shell中的变量
目录
变量(重点)
1、变量的含义
a. 什么是量
量就是数据。
b. 什么是变量
数据可以发生改变就是变量。
在一个脚本周期内,其值可以发生改变的量就是变量。
c. 什么叫做一个脚本周期
一个脚本周期我们可以简单的理解为当前的shell文件。
变量是shell中不可或缺的一部分,也是最基础、最重要的组成部分。
2、变量的定义与使用(重点)
变量,先定义后使用。
定义形如:class_name="yunwe "
使用形如:echo $class_name
变量就是由2部分组成,一个是变量名(左边),另外一部分是变量的值(右边)
变量名和变量值是什么关系??
变量名和变量值是使用和被使用关系; 我们的变量名来使用变量值;
在使用变量的时候一定需要在变量名前面添加一个$符号,该要求在其他语言中也存在的(例如php)。
变量名的规范
注意,变量名后面的等号左右不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线“_”。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
问题:以下哪个shell变量名是合法的?
A. var B.?var C. user*name D.echo
案例1:使用变量改写入门脚本中的第1个shell脚本
[root@localhost ~]# vi test2.sh
#!/bin/bash
str='hehe'
echo $str
[root@localhost ~]# chmod +x test2.sh
[root@localhost ~]# ll test2.sh
-rwxr-xr-x. 1 root root 33 7月 5 20:09 test2.sh
[root@localhost ~]# ./test2.sh
hehe
关于单双引号的问题:
双引号能够识别变量,双引号能够实现转义(类似于“\*”)
单引号是不能识别变量,只会原样输出,单引号是不能转义的
案例2:定义一个变量,输出当前时间,要求格式为“年-月-日 时:分:秒”。
[root@localhost ~]# vi dt.sh
#!/bin/bash
dt=`date +'%F %T'`
echo $dt
[root@localhost ~]# chmod +x dt.sh
[root@localhost ~]# ./dt.sh
2023-07-05 20:13:19
注意:反引号(esc键下方的那个键),当在脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用“反引号”。
3、只读变量(了解)
语法:readonly 变量名
案例:定义变量a并且其值为10,随后设置其为只读变量,再去尝试重新赋值
[root@localhost ~]# vi a.sh
#!/bin/bash
a=10
readonly a #设置a为只读变量
a=20
echo $a
[root@localhost ~]# chmod +x a.sh
[root@localhost ~]# ./a.sh #执行shell脚本文件,发现并没有输出20,因为a是只读变量
./a.sh:行4: a: 只读变量
10
4、接收用户输入(重点)
语法:read -p 提示信息 变量名
案例:编写一个脚本,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件
[root@localhost ~]# vi test3.sh
#!/bin/bash
read -p '请输入需要创建的文件路径:' filepath #输入的文件路径直接赋值给变量filepath
touch $filepath #创建文件
echo '文件创建成功'
ls -l $filepath #查看文件信息
[root@localhost ~]# chmod +x test3.sh
[root@localhost ~]# ./test3.sh
请输入需要创建的文件路径:/root/msk.txt
文件创建成功
-rw-r--r--. 1 root root 0 7月 5 20:23 /root/msk.txt
5、删除变量(了解)
语法:unset 变量名
案例:定义变量b=20,再输出b的值,随后删除b,最后再输出下b
[root@localhost ~]# vi b.sh
#!/bin/bash
b=20
echo $b
unset b
echo $b
[root@localhost ~]# ./b.sh
20
#这里输出为空
[root@localhost ~]#
好了,到这里常用得基础指令就说完了,抓紧练习吧
能够给大家带来价值的话,给个三连哦😘,小的祝各位看官万福金安😊
⭐️徒手摘星,爱而不得,世人万千,再难遇我。⭐️