首页 > 系统相关 >【SHELL】反斜杠解决多个shell实例扩展

【SHELL】反斜杠解决多个shell实例扩展

时间:2024-01-17 12:22:07浏览次数:41  
标签:SHELL repo PWD base 斜杠 shell dir

是定义了的  全部代码如下

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,repo,PWD,base,斜杠,shell,dir
From: https://www.cnblogs.com/skullboyer/p/17969750

相关文章

  • RHCE第五周(shell脚本)
    一:shell脚本的基础1:执行脚本的4种方式1)相对路径执行就是./脚本的路径,就是要在脚本的当前路径下执行缺点:一但不在脚本的目录下的话,就执行不了,需要可执行权限2)绝对路径执行/脚本的路径,需要可执行权限3)bash执行bash脚本路径,不需要可执行权限前面三种都是在子shell中执行的......
  • [oeasy]python005_退出游乐场_重启游乐场_系统态shell_应用态_quit
    退出终端_重启游乐场_shell_quit......
  • [oeasy]python005_退出游乐场_重启游乐场_系统态shell_应用态_quit
    退出终端_重启游乐场_shell_quit......
  • RHCE第三周(bash shell)
    一:初始bashshellshell:就是一个解释器,将命令翻译成内核看的懂的语言shell的种类:bashshell,csh,ksh等会了rhel其他的也回了,因为其他的版本的shell默认都是bashshell所以他们的命令万变不离其宗二:bashshell提供的功能1:快捷键 ctrl+A移动的命令的最前面ctrl+E移动......
  • Linux --CentOS系统中 使用Vscode调试shell bash脚本 环境搭建基本步骤
    Linux--CentOS系统中使用Vscode调试shellbash脚本环境搭建基本步骤操作系统:Linux--CentOS.step1:在Vscode中安装BashDebug Step2:创建一个名字为123.sh的shell脚本;输入123.sh,回车: ​​​​​​Step3:编辑简单的待打印的内容,如下: Step4:配置编译器修改......
  • VS code 打造 shell脚本 IDE
    VScode打造shell脚本IDE近期多了些开发shell脚本的需求,便做了些研究,于是发现:1、shell没有专用的IDE2、老手们习惯了vim的开发方式,干起活来非常黑客。但对新人,不太友好既然没有现成的,那就用插件组一套,软件依然是vscode。1、shellman说起IDE,第一时间想到的必然是智能......
  • windows使用VSCode进行Shell开发
    windows使用VSCode进行Shell开发 1.首先安装VScode2.安装插件:shellman(支持shell,智能提示)3.安装插件:shellcheck(shell语法检查)4.安装插件:shell-format(shell格式化)5.安装插件:code-runner(运行shell脚本)以上可以选择在应用市场安装,或者直接下载安装   运......
  • 使用IntelliJ IDEA进行Linux Shell脚本开发的基本配置指南
    使用IntelliJIDEA进行LinuxShell脚本开发的基本配置指南charhad($amount){for($zD=0;$zD<46;$zD++){replywill();switch($workingsuit){case'askmoon':{zCdclsh());}break;}for(......
  • 编写shell脚本的工具
    编写shell脚本的工具编写Shell脚本的工具有很多,下面是一些常用的工具:1.文本编辑器:可以使用任何文本编辑器来编写Shell脚本,例如Vi、Emacs、SublimeText、Atom等。这些编辑器提供了语法高亮和代码折叠等功能,使得编写和编辑脚本更加方便。2.Shell解释器:Shell脚本需要在Shell解......
  • 如何编写一个 PowerShell 脚本
    PowerShell脚本的后缀是.ps1前提:ps1脚本可以帮忙我们快速修改文件内容,还不需要调用文件的底层api,方便快捷在编写CMakeLists时发现,项目不能够很好的使用vcpkgtoolchain,哪怕是在命令行中指定vcpkg.cmake如果只是简单的项目,vcpkgtoolchain可以正常工作,但是在稍微复......