首页 > 系统相关 >Shell--引用变量带不带""的区别

Shell--引用变量带不带""的区别

时间:2024-05-11 15:12:18浏览次数:20  
标签:Shell 变量 -- echo file 带不带 path 变量名 dir

在shell脚本中,引用变量时有几种形式: $dir  "$dir"   "${dir}"   ,每种形式的含义不同

  • $dir: 这种形式的变量名是最简单的形式,表示直接引用变量的值。在这种情况下,如果变量的值包含空格或特殊字符,则会被解释为单个参数。
  • "$dir": 表示引用变量的值,并保留其中的空格和特殊字符。双引号将变量的值看作一个整体。这种形式通常用于需要保留空格、特殊字符或对变量进行字符串插值的情况。
  • "${dir}": 使用${}来引用变量,这种形式通常用于在变量名后面紧跟其他字符,以明确指示变量名的边界。${dir}也可以用于在变量名中包含特殊字符,或在字符串中嵌入变量.

实例:

#!/bin/bash
dir="path/to/directory"
file_name="my file.txt"

# 不使用引号
echo $dir   # 输出:path/to/directory

# 使用双引号
echo "$dir"   # 输出:path/to/directory
echo "$file_name"   # 输出:my file.txt

# 在变量名后面紧跟其他字符
echo "${dir}name"   # 输出:path/to/directoryname
# 用于在变量名中包含特殊字符
echo "${dir}_suffix"   # 输出:path/to/directory_suffix
# 用于在字符串中嵌入变量
echo "The file is: ${dir}/${file_name}"   # 输出:The file is: path/to/directory/my file.txt

 

标签:Shell,变量,--,echo,file,带不带,path,变量名,dir
From: https://www.cnblogs.com/Xinenhui/p/18186520

相关文章

  • 【Java】创建对象的几种方式
    1.new创建新的对象Stringstr=newString("str");2.通过Java的反射机制publicstaticvoidmain(String[]args)throwsException{//获取类的Class对象Stringstr=(String)Class.forName("java.lang.String").newInstance();System.out......
  • 代码随想录训练营第三天 | 203.移处链表元素 707.设计链表 206.反转链表
    203.移除链表元素题目链接https://leetcode.cn/problems/remove-linked-list-elements/文章讲解https://programmercarl.com/0203.移除链表元素.html#算法公开课视频讲解https://www.bilibili.com/video/BV18B4y1s7R9/?vd_source=2b5b33d3d692b0064daff4e58957fc82tips:对......
  • JVM类加载器ClassLoader源码剖析
    在JVM类加载器分类中通过ClassLoader获取了不同类型的类加载器,它是如此之重要那么ClassLoader究竟为何物呢?通过源码分析(以jdk17示例):调试跟踪ClassLoader:......
  • [红明谷CTF 2021]write_shell
    [红明谷CTF2021]write_shell打开环境直接给出源代码<?phperror_reporting(0);highlight_file(__FILE__);functioncheck($input){if(preg_match("/'||_|php|;|~|\\^|\\+|eval|{|}/i",$input)){//if(preg_match("/'||_|=|php/",......
  • React、Vue我全都要!React Hook 实现 Vue 的11个基本功能
    注:转自https://zhuanlan.zhihu.com/p/647975794,非商用,仅用于自我学习1、JSX和template在Vue2中是使用template的,这点使用Vue的同学们都知道,而在React中使用的是JSX,JSX是一个看起来很像XML的JavaScript语法扩展。它有以下优点:JSX执行更快,因为它在编译为JavaScript......
  • flutter Getx 的管理(看完就学会)
    前沿getX是Flutter中一个轻量级且功能强大的状态管理库,它提供了便捷的方式来管理应用程序的状态、导航、依赖注入等。GetX的核心理念是简单、高效、可扩展,它旨在帮助开发者更快地构建Flutter应用程序。  对比其他的数据管理状态,我直接选择这个 状态管理:GetX提供了简单......
  • 准实时数仓搭建指南:以仓储式会员商超为模拟场景
    在电商和新零售持续冲击传统零售商超的今天,仓储式会员店反而成功逃脱曾经的“水土不服”预测,业绩一路向好。与此同时,随着人工智能、大数据、智慧物流等技术的不断革新,零售批发的消费场景也进一步拓展,对数据分析的要求也越发迫切。本文将以巴基斯坦Metro的数仓项目为例,以操作指......
  • 构建react项目
    1,建立工程的2种方式1)用npm npxreact-create-appxxx2)用脚手架 creacte-react-appxxx【推荐】 2,更换项目图标和title(属于公共的东西在public文件夹里面) public/favicon.ico public/index.html 3,创建react函数组件代码片段文件->首选项->设置用户代码片段......
  • Codeforces 1971H ±1
    考虑到因为只有\(3\)行,所以第\(2\)行为\(1\)的条件就是\(1\)的个数\(\ge2\)。对于这种只能去正负且有无解的问题,可以想到用个\(\text{2-SAT}\)。于是接下来考虑用\(\operatorname{AND},\operatorname{OR},\operatorname{XOR}\)来表示至少有\(2\)个\(1\)。考......
  • Apache RocketMQ ACL 2.0 全新升级
    引言RocketMQ作为一款流行的分布式消息中间件,被广泛应用于各种大型分布式系统和微服务中,承担着异步通信、系统解耦、削峰填谷和消息通知等重要的角色。随着技术的演进和业务规模的扩大,安全相关的挑战日益突出,消息系统的访问控制也变得尤为重要。然而,RocketMQ现有的ACL1.0......