Shell编程-变量
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们前面学习了那么多命令,以及涉及到部分逻辑判断的问题。从简单来说,他就是Shell编程,只有由于命令比较单一,只能实现比较简单的功能。如果我们把多个操作都放到一起去,并添加更复杂的逻辑在里面,他就是Shell编程。所以我们主要从以下几个方面讲解Shell编程:
Shell编程-什么是shell
Shell编程-变量(本章节)
Shell编程-数据类型
Shell编程-逻辑判断
Shell编程-if判断
Shell编程-if和else
Shell编程-while循环
Shell编程-for循环
Shell编程-case
Shell编程-break
Shell编程-continue
Shell编程--函数
Shell编程-案例(一)
Shell编程-案例(二)
Shell编程-小结
我们在讲Linux日常运维=环境变量env的时候就讲过环境变量,那些都是系统自带或者手工注入到的全局或者局部变量,满足的是通用性的要求,我们都可以直接使用,但是我们在写shell脚本的还需要根据自己的需要定义一些变量,只能在shell内部使用。
一、变量的定义和命名规则
-
命名规范:
-
Shell 变量名由字母、数字和下划线组成,但必须以字母或下划线开头。
-
变量名应该具有描述性,以便能够清晰地表达其代表的数据含义。例如,可以使用
count
表示计数,file_path
表示文件路径等。 -
变量名区分大小写,例如
VAR
和var
是两个不同的变量。
-
-
定义方式:
-
可以使用等号(=)来为变量赋值,从而定义一个变量。例如:
my_variable="Hello World"
这里定义了一个名为my_variable
的变量,并将其值设置为 "Hello World"。 -
在赋值时,如果值中包含空格或特殊字符,需要将其用引号(单引号或双引号)括起来。例如:
my_path="/usr/local/bin"
如果路径中包含空格,像my_path="/usr/local/my folder"
,则必须使用引号将其括起来,以确保 Shell 正确识别。
-
二、变量的引用和替换
-
引用变量值:
-
如前所述,可以使用
${变量名}
或$变量名
的方式来引用变量的值。 -
例如,如果有一个变量
message="Hello"
,那么可以使用echo $message
或echo "${message} World"
来输出变量的值或在字符串中包含变量的值。 -
${message} 和 $message在绝大多数情况下效果是一样的,但是在包含特殊符号等复杂的情况下建议使用${message}。
-
-
变量替换:
-
Shell 支持在命令和字符串中进行变量替换,即将变量的值插入到相应的位置。
-
例如,如果有一个变量
file="/path/to/myfile.txt"
,可以使用cat $file
来读取该文件的内容,这里$file
被替换为实际的文件路径。 -
还可以在变量值中包含其他变量的引用,进行嵌套的变量替换。例如,如果有
dir="/path/to"
和file="myfile.txt"
,那么可以定义一个新变量full_path="${dir}/${file}"
,这里${dir}
和${file}
的值被组合起来形成full_path
的值。
-
三、变量类型
-
环境变量:
-
这些变量对于当前用户的所有进程都是可见的。
-
它们通常以大写字母命名,例如
HOME
、PATH
、USER
等。 -
可以使用
export
命令将一个普通变量转换为环境变量。
-
-
本地变量:
-
这些变量仅在当前Shell实例中可见。
-
它们通常用于存储脚本中的临时数据。
-
-
位置变量:
-
这些变量用于存储脚本的参数。
-
$0
:脚本名称。 -
$1
-$9
:脚本的第一到第九个参数。 -
$#
:传递给脚本的参数个数。 -
$*
:所有位置参数的单个字符串。 -
$@
:所有位置参数的单独引用字符串。
-
-
特殊变量:
-
$?
:最后一条命令的退出状态。 -
$$
:当前Shell进程ID(PID)。 -
$!
:最后一个后台命令的进程ID。 -
$-
:当前Shell的选项。 -
$?
:最后命令的退出状态
-
总结
1.为了让变量具有可读性,命名的时候注意规范。
2.简单的变量在引用的时候可直接使用$,复杂的变量使用${}。
3.变量统一放在脚本开头部分,更容易识别。
4.这就是真实的脚本,但是只定义了一个变量,后面备份逻辑使用这个变量就可以,这里只是只打印了变量。
#!/bin/bash
current_date=$(date +%Y-%m-%d)
echo $current_date
原文地址:https://blog.csdn.net/dessler/article/details/142863061
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!