day62 shell--变量的学习

day62 shell---变量的学习

变量的实际的使用

前言

到底会用,就看自己对原理理解是否透彻

字符串类型

shell 的变量的值,都会被当作字符串去处理,

底层都是作为字符串去处理

写法可以不同,纯字符串的值的形式

关于定义字符串的细节

  • 单引号,所见即所得
  • 双引号,识别特殊符号
  • 反引号,用于执行linux命令,用这个写法
[root@master-61 ~]# my_url=http://www.yzk.com
[root@master-61 ~]# echo $my_url
http://www.yzk.com
[root@m-61 ~]#my_url="http://${my_domain}"
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#echo  ${my_url}

http://www.yuchaoit.cn
[root@m-61 ~]#time_now=`date +%F-%T`
[root@m-61 ~]#today="今天的日期是:$(date +%F)"
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#echo ${today}
今天的日期是:2022-06-22

定义变量

用于变量的存储linux的命令执行的结果

主要学习,用什么语法可以执行命令,且获取值

建议获取命令执行的结果,用 ${} ,因为太多的引号,眼花。

[root@master-61 ~]# echo "当前时间是: ${time_now}"
当前时间是: 2025-05-02-08:33:42


获取主机名,获取ip
# 如果要在字符串中,获取命令的执行的结果,可以使用反引号,$(),这两个方法

[root@master-61 ~]# my_hostname="当前的主机是:$(hostname)"
[root@master-61 ~]# 
[root@master-61 ~]# hostname
master-61
[root@master-61 ~]# my_ip="当前的主机的ip是:$(hostname -I)"
[root@master-61 ~]# 
[root@master-61 ~]# echo -e "主机名:${my_hostname}\n主机ip:${my_ip}"
主机名:当前的主机是:master-61
主机ip:当前的主机的ip是:10.0.0.61 172.16.1.61 

变量提取的语法

需要注意以下的几点

${变量名},这个要比$变量名要靠谱

不熟练的话,就全都写

# 完整的写法
[root@master-61 ~]# echo "我叫${name}"
我叫yzk

修改,删除变量

1. 修改变量
[root@master-61 ~]# name2=“凯哥”
[root@master-61 ~]# echo "${name2}_hello"
“凯哥”_hello


2.删除变量
[root@master-61 ~]# set |grep "^name"
name=yzk
name2=“凯哥”

#学会找到当前shell环境中的变量名的玩法

# 删除变量名
[root@master-61 ~]# unset name name2
[root@master-61 ~]# set |grep "^name"

[root@master-61 ~]# name='yzk'
[root@master-61 ~]# set |grep "^name"
name=yzk

变量的传递,参数的传递(重要)

变量除啦再命令行中直接的调用,存,取值

还经常在脚本中传递参数,但是在脚本后中,这个特殊的变量,是shell内置固定的语法的规则

具体的用法
这个位置参数特殊变量,你会发现,需要结合如 if,  case条件判断语句,再去玩,
今天先看懂这些变量。


#!/usr/bin/env bash
echo "当前shell脚本文件名:$0"
echo "第1个传入位置参数:$1"
echo "第2个传入位置参数:$2"
echo "第3个传入位置参数:$3"
echo "第4个传入位置参数:$4"
echo "第5个传入位置参数:$5"
echo "第6个传入位置参数:$6"
echo "第7个传入位置参数:$7"
echo "第8个传入位置参数:$8"
echo "第9个传入位置参数:$9"
echo "第10个传入位置参数:${10}"
echo "第11个传入位置参数:${11}"
echo "第12个传入位置参数:${12}"
echo "提取所有的位置参数,使用\$*提取:$*"
echo "提取所有的位置参数,使用\$@提取:$@"
echo "位置参数总个数是:$#"
echo "当前shell脚本执行的pid是:$$"
echo "上一个命令的执行返回结果是:$?"
[root@master-61 ~]# bash vars.sh yzk01 yzk02 yzk03 yzk04
当前shell脚本文件名:vars.sh
第1个传入位置参数:yzk01
第2个传入位置参数:yzk02
第3个传入位置参数:yzk03
第4个传入位置参数:yzk04
第5个传入位置参数:
第6个传入位置参数:
第7个传入位置参数:
第8个传入位置参数:
第9个传入位置参数:
第10个传入位置参数:
第11个传入位置参数:
第12个传入位置参数:
提取所有的位置参数,使用$*提取:yzk01 yzk02 yzk03 yzk04
提取所有的位置参数,使用$@提取:yzk01 yzk02 yzk03 yzk04
位置参数总个数是:4
当前shell脚本执行的pid是:1383
上一个命令的执行返回结果是:0

总结

$0 提取文件名字
$1...${20} 依次提取位置参数的值
$*$@ 接受所有的参数,
$# 判断参数的个数,这里是4个
$$ 这里是提取进程的pid号码
$? 返回上一条执行的结果
posted @ 2025-05-02 14:59  国家一级冲浪yzk  阅读(6)  评论(0)    收藏  举报