当前位置: 首页 > article >正文

shell脚本的变量与应用

        Shell脚本是一种解释性语言,用于编写自动化任务和系统管理脚本。在Shell脚本中,变量用于存储和操作数据。变量在脚本中可以被赋值、读取和修改。    

        在shell脚本中,变量用于存储数据,可以是数字、字符串或其他类型的值。可以使用变量来存储中间结果、用户输入或从命令输出中获取的值,以便在脚本的不同部分进行引用和使用。

命令赋值法
  1. 直接赋值:使用=符号将值赋给变量,如name="John"

  2. 命令替换:使用反引号 ` 或者 $() 将命令的输出结果赋给变量,如dateStr=$(date +%Y-%m-%d)

  3. 环境变量赋值:使用export命令将变量导出为环境变量,供其他脚本或程序使用。

注意:定义变量时,变量名只能以字母或者"_"作为开头

变量名=变量值

num1="1"

num2="2"

echo "num1=$num1,num2=$num2"

变量删除

可以使用 unset 命令来删除变量。 unset 命令用于移除一个或多个变量的定义。

name="张三"
echo $name
张三
unset name
echo $name

通过标准输入来定义变量

格式:read 获取标准输入的内容给 变量

read -p "请输入一个数值来赋予变量:" i

echo $i

环境变量
变量的范围划分
  • 全局变量(Global Variables):全局变量在整个脚本中都是可见和可用的。它们可以在脚本的任何位置定义,并且可以在整个脚本的任何地方使用。全局变量对整个脚本的所有函数和命令都是可见的。
  • 局部变量(Local Variables):局部变量只在定义它们的函数或命令中可见和可用。它们的作用范围被限制在特定的函数或命令中,不能在其他函数或命令中使用。
  • 本地变量:生效范围为当前shell进程中某代码片断,通常指函数。 只能在定义它们的函数/脚本内 部中使用。

查看所有的环境变量

env

其中用处最为广泛的环境变量为

$PATH 表示可执行文件的默认路径

$USER 表示用户名称

$HOME 表示用户的宿主目录

$LANG 表示语言和字符集

$PWD 表示当前所在工作目录

环境变量的特性

  • 可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量。
  • 一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程。
  • 一般只在系统配置文件中使用,在脚本中较少使用。

环境变量的配置文件

全局配置文件:

/etc/profile,修改此文件会作用于所有用户。

用户独立的配置文件:

env ~/.bash_profile,修改这个文件只作用于当前用户。

位置变量

        位置变量是$后以数字为结尾的的变量代表着每一个变量和标准输入参数的位置。(数字是以1为开头。 1-9是正常跟在$后面即可。当数字大于或等于10,要用{ }进行使用,区别shell误识别。)

[root@localhost test]#vim test.sh

#!/bin/bash
echo ”第一个变量值为: $1“
echo ”第二个变量值为: $2“
echo ”第三个变量值为: $3“
echo ”第四个变量值为: $4“
echo ”第五个变量值为: $5“

自定义变量

$0 :获取当前脚本的名称(如果是软链接,显示软链接文件名)。

$@ :将所有参数作为独立的字符串返回。

$* :将所有参数作为单个字符串返回。

$# :获取当前命令行参数的个数。

$_ :获取上一个命令或脚本的最后一个参数。

$$ :获取当前Shell进程的PID。

$? :获取上一次命令的退出状态,返回0表示成功,非0表示错误。

        以上只是一些常见的变量用法,shell脚本中还有更多高级的变量操作和用法,可以根据具体需求进行学习和使用。


http://www.kler.cn/a/291984.html

相关文章:

  • 鸿蒙学习生态应用开发能力全景图-赋能套件(1)
  • 前端埋点、监控
  • rk3399开发环境使用Android 10初体验蓝牙功能
  • 购物车demo全代码-对接支付宝沙箱环境
  • JMeter与大模型融合应用之JMeter日志分析服务化实战应用
  • 一文详细深入总结服务器选型
  • 计算机网络11——数据库语法2
  • hyperf json-rpc
  • <meta name=“robots“ content=““>介绍
  • Linux下快速判断当前终端使用的是bash or csh
  • 操作系统:线程实现方式
  • 【赵渝强老师】MongoDB的存储引擎
  • WorkPlus安全即时通讯:端到端加密开启信息保密新时代
  • [大数据]Debug:常见错误集合
  • 【Python机器学习】NLP词频背后的含义——从词频到主题得分
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调-ms-swift-单机多卡-RTX 4090双卡(十四)
  • 微信小程序知识点(二)
  • 2024年高教社杯数学建模国赛B题超详细解题思路
  • 【深度学习】softmax 回归的从零开始实现与简洁实现
  • java fastxml json 科学计数法转换处理
  • 《机器学习》—— PCA降维
  • 草料二维码功能上新!可以跨分区移动或复制内容了!
  • 贷款被拒?这些“隐形警报”你可能没注意到!
  • nginx配置直接下载文件
  • volatile
  • 嵌入式OpenHarmony系统的一些特点