【SHELL】反斜杠解决多个shell实例扩展
本意是想获取代码仓相对路径,代码如下
base_dir=`pwd`
repo forall -c '{
user_dir=$(realpath --relative-to="$base_dir" "$PWD")
echo $user_dir
}'
执行后报错 realpath: '': No such file or directory
分析原因
这个问题的原因是repo forall -c命令在每个仓库中执行一个新的shell实例,这个新的shell实例不会继承当前shell实例的环境变量。所以,虽然在repo forall -c命令之前定义了$base_dir,但是在repo forall -c命令中的shell实例并不能访问到它。
解决这个问题的一种方法是在repo forall -c命令中直接使用$base_dir的值,而不是使用$base_dir变量。可以使用双引号来实现这一点,因为在双引号中的变量会被shell自动扩展。
修改如下:
base_dir=`pwd`
repo forall -c "{
user_dir=\$(realpath --relative-to=\"$base_dir\" \"\$PWD\")
echo \$user_dir
}"
使用了反斜杠(\)来转义特殊字符,以防止它们在repo forall -c命令中被提前扩展。这样,$base_dir和$PWD就会在每个仓库的shell实例中被正确地扩展了。
反斜杠(\)来转义特殊字符
在shell脚本中,反斜杠(\)是一个特殊的字符,被称为转义字符。它的作用是改变紧跟其后的字符的含义。当你在一个字符前面加上反斜杠,shell会将这个字符视为普通字符,而不是特殊字符。
在上面的例子中,反斜杠被用来转义$字符。在shell脚本中,$字符通常用来引用变量。例如,$PWD会被替换为当前工作目录的路径。但是,如果你在$字符前面加上反斜杠,如\$PWD,shell就会把$PWD当作普通的字符串,而不会替换为当前工作目录的路径。
同样,反斜杠也被用来转义双引号(")。在shell脚本中,双引号用来定义字符串。如果你在双引号内部的$字符前面加上反斜杠,如\"$PWD\",那么$PWD就会在每个新的shell实例中被扩展,而不是在当前的shell实例中被提前扩展。
总的来说,反斜杠(\)在shell脚本中用来防止特殊字符被提前扩展,这就是所谓的转义
【SHELL】反斜杠解决多个shell实例扩展的更多相关文章
- sed替换 - 含反斜杠(/)和Shell变量
sed替换 - 含反斜杠(/)和Shell变量 摘自: https://blog.csdn.net/zhenyongyuan123/article/details/6616263 2011年07月19 ...
- Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]
在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行:对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之.如下,当在命令行中输入:echo *child. ...
- linux,shell输入反斜杠显示'W'。
linux,shell输入反斜杠显示'W'. solution: 字体必须为"Courier New".
- linux shell中单引号、双引号、反引号、反斜杠的区别
摘自http://www.jb51.net/article/33495.htm 1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg 403-212- ...
- Shell中单引号、双引号、反引号、反斜杠的区别
1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg -- Susan Topple -- 如果我们想查找的是Susan Goldberg,不能直接使 ...
- Linux下Shell脚本字符串单引号、双引号、反引号、反斜杠的作用和区别
一.单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单引号(对单引号使用转义符后也不行) ...
- shell脚本中的反引号,单引号,双引号与反斜杠
转自:http://blog.sina.com.cn/s/blog_6561ca8c0102we2i.html 反引号位 (`)经常被忽略,而且容易与单引号弄混.它位于键盘的Tab键的上方.1键的左方 ...
- shell脚本特殊符号——单引号、双引号、反引号、反斜杠
1. 单引号 ( '' ) 被单引号用括住的内容,将被视为单一字串. 2. 双引号 ( " " ) 被双引号用括住的内容,将被视为单一字串.双引号只要求忽略大多数,具体说,括在双 ...
- Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示 ...
- sed替换 - 含斜杠(\)和Shell变量
gen_image.bat中的内容如下: FOTARomPacker.exe -i .\_ini\FOTARomPacker.ini -o .\_Output\a.bin @IF %ERRORLE ...
随机推荐
- 若依集成mybatisplus实现mybatis增强
- Math数学工具类、向上取整,向下取整,四舍五入,最大值
package com.guoba.math; public class MathTest { /* Math数学工具类,包含以下方法: .ceil() 向上取整 .floor() 向下取整 .rou ...
- 五菱宝骏车机升级教程【嘟嘟桌面或ES文件管理器】
文章来源:https://www.djww.net/607.html 简介 越来越多的汽车厂商自研车机系统,其实就是在原来安卓的基础上加入自己的元素,然后禁用某些功能从而实现禁止用户安装第三方app. ...
- Asp .Net Core 系列:Ocelot结合Consul实现服务注册、服务发现
Consul下载地址:https://www.consul.io/downloads.html 文档:https://learn.hashicorp.com/consul/getting-starte ...
- .NET技术分享日活动-202107
2021年7月3日下午,个人组织举办了山东地区的第二次山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NE ...
- 面试官问我:线程锁导致的kafka客户端超时,如何解决?
本文分享自华为云社区<线程锁导致的kafka客户端超时问题>,作者: 张俭 . 问题背景 有一个环境的kafka client发送数据有部分超时,拓扑图也非常简单 定位历程 我们先对客户端 ...
- 物联网为什么需要5G?
摘要:5G,这个词,我想每个接触ICT行业的朋友都有听过,可5G的到来,对物联网行业的帮助究竟是什么? 我相信,95%的ICT从业者对5G这一概念没有一个清晰的认知. 这一期文章的主题主要是普及一些5 ...
- 一文带你了解华为云GaussDB的五大黑科技
摘要:在华为开发者大会2021(HDC·Cloud)中,华为云数据库多位技术专家分享了GaussDB系列数据库全新5大黑科技. 4月24-26日,华为开发者大会2021(HDC·Cloud)在深圳隆重 ...
- 二进制SCA指纹提取黑科技:Go语言逆向技术
摘要:SCA(Software Composition Analysis)软件成分分析,指通过对软件源码.二进制软件包等的静态分析,挖掘其所存在的开源合规.已知漏洞等安全合规风险,是一种业界常见的安全 ...
- “互联网+”大赛之AI创新应用赛题攻略:大胆脑洞,共绘智慧生活蓝图
摘要:本次"互联网+"大赛AI创新应用赛题的设置是希望学生可以从日常实际应用需求出发,结合自己的奇思妙想,提升智能终端用户的使用体验,为构建万物互联的智能世界贡献一份力量. 本文分 ...