如何在路径有空格的另一个 bash 脚本中运行 bash 脚本?

     2023-03-15     148

关键词:

【中文标题】如何在路径有空格的另一个 bash 脚本中运行 bash 脚本?【英文标题】:How to run bash script inside another bash script where path has spaces? 【发布时间】:2021-08-28 00:49:44 【问题描述】:

您好,我正在尝试从另一个 bash 脚本中调用一个 bash 脚本。结构如下:

脚本一: a.sh

示例:

a.sh /Users/Desktop is this/

现在我想像这样在 b.sh 中运行 a.sh 脚本b:

b.sh <pass_a_path_with_spaces>

示例:

b.sh

path="/Users/Desktop\ is\ this/"
script_a="/Users/Desktop\ is\ this/a.sh"
source "$script_a" "$path"

但是当我运行它时,我得到了这个错误: /Users/Desktop\ is\ this/a.sh: 没有这样的文件或目录

谁能指出我哪里出错了?

谢谢!

【问题讨论】:

你在“双引号”。删除反斜杠:"/Users/Desktop is this/" 您是否考虑过使用Command Substitution 和相对路径?您可以使用 $() gnu.org/software/bash/manual/html_node/… 嵌套多个命令 @mugglewithastruggle:你做得过火了:要么 用反斜杠转义每个空格, 将字符串放在引号之间,而不是两者兼而有之。示例:path='/Users/Desktop is this'。小警告:我不会命名变量 path;也许有一天你会从 bash 切换到 zsh,而 path 在 zsh 中有特殊的含义。 【参考方案1】:

使用引号',因为这是横向的,并且单引号内的字符串在使用变量时不会更改。

例如, a.sh '/Users/桌面是这个/'

【讨论】:

【参考方案2】:

您需要在目录周围加上空格double quote 以保留目录名称,如下所示:

b.sh

  path=/Users/"Desktop is this"/
  script_a=/Users/"Desktop is this"/a.sh
  source "$script_a" "$path"

【讨论】:

(=)符号后有空格的变量赋值?

】(=)符号后有空格的变量赋值?【英文标题】:Assignmentofvariableswithspaceafterthe(=)sign?【发布时间】:2015-01-1407:45:42【问题描述】:在Bash中,为变量赋值是使用T=content完成的,等号前后没有空格。尽管我在shell脚本PWD=/bin/pwd中看... 查看详情

如何从shell脚本中的另一个目录获取文件的完整路径? [复制]

】如何从shell脚本中的另一个目录获取文件的完整路径?[复制]【英文标题】:Howtogetfullpathofafilefromanotherdirectoryinshellscript?[duplicate]【发布时间】:2016-07-0617:41:32【问题描述】:我有一个shell脚本/home/abc/xyz/test.sh我有一个文件/home/d... 查看详情

如何在bash脚本中运行curl并将结果保存在变量中[重复]

】如何在bash脚本中运行curl并将结果保存在变量中[重复]【英文标题】:Howtoruncurlinbashscriptandkeeptheresultinavariable[duplicate]【发布时间】:2017-07-0320:54:50【问题描述】:这应该很容易,但由于某种原因它不是:尝试运行一个简单的cur... 查看详情

如何包含具有相对路径的 bash 脚本? [复制]

】如何包含具有相对路径的bash脚本?[复制]【英文标题】:Howtoincludebashscriptswithrelativepath?[duplicate]【发布时间】:2018-06-1810:08:51【问题描述】:我有3个脚本:脚本A:echo"Heyyou!"脚本B:source./A.sh脚本C:source./libs/B.sh因此文件夹“li... 查看详情

如何检查是不是在 bash 脚本中以 root 身份运行

】如何检查是不是在bash脚本中以root身份运行【英文标题】:Howtocheckifrunningasrootinabashscript如何检查是否在bash脚本中以root身份运行【发布时间】:2013-08-1511:24:30【问题描述】:我正在编写一个需要root级别权限的脚本,我想让它... 查看详情

如何在 bash 中获取通过 $PATH 执行的脚本的绝对路径? [复制]

】如何在bash中获取通过$PATH执行的脚本的绝对路径?[复制]【英文标题】:HowcanIgetabsolutepathtoascriptexecutedvia$PATHinbash?[duplicate]如何在bash中获取通过$PATH执行的脚本的绝对路径?[复制]【发布时间】:2017-05-0417:46:42【问题描述】:我... 查看详情

如何在 metalsmith 中运行 bash 脚本

】如何在metalsmith中运行bash脚本【英文标题】:Howdoyourunabashscriptinmetalsmith【发布时间】:2015-05-2419:05:11【问题描述】:如何让metalsmith运行bash脚本?你能做到吗?我的build.js非常简单,但我想在编译完所有内容后从build文件夹中删... 查看详情

sh在bash中获取正在运行的脚本路径的完整路径(或basedir)。把它放在每个bash脚本的顶部,这样你就不会迷路。(代码片段)

查看详情

如何在 bash 脚本中使用正则表达式否定测试?

】如何在bash脚本中使用正则表达式否定测试?【英文标题】:HowdoInegateatestwithregularexpressionsinabashscript?【发布时间】:2011-05-3108:59:01【问题描述】:使用GNUbash(版本4.0.35(1)-release(x86_64-suse-linux-gnu),我想用正则表达式否定一个测... 查看详情

在bash脚本中复制变量之间的值(代码片段)

如何将变量中的数值复制到bash脚本中的另一个变量。如果这是C,我会这样做inta=0;intb;a=b;我想这样做:if[$countip-gt$totalip];then$countip-eq$srctip#<--Myproblemishere!echo$srctipfi答案说啊countip=$srctip这就是赋值在bash中的工作方式。这将把coun... 查看详情

如何在一个bash脚本中运行多个tell命令打开新窗口?(代码片段)

我试过了#!/bin/bashosascript-e'tellapplication"Terminal"doscript"cd~/www/service/code&&npminstall&&npmrundev"activateendtelltellapplication"Terminal"doscript"cd~/www/app-ui&&npmins 查看详情

如何在 bash 脚本中用多行/流替换单个流/行?

】如何在bash脚本中用多行/流替换单个流/行?【英文标题】:Howtoreplaceasinglestream/linewithmultipleline/streaminbashscripting?【发布时间】:2021-11-1123:07:01【问题描述】:我对此很陌生,所以请多多包涵。:(在android的bash脚本中,我试图用... 查看详情

Bash 脚本:识别拖放到 konsole 的路径

】Bash脚本:识别拖放到konsole的路径【英文标题】:Bashscript:Recognizingpathsdrag-and-droppedtokonsole【发布时间】:2015-11-1015:11:21【问题描述】:我正在寻找可以将Windows用户目录中的用户文件复制到备份驱动器的脚本。我几乎希望转移... 查看详情

将 bash 脚本添加到路径

】将bash脚本添加到路径【英文标题】:Addabashscripttopath【发布时间】:2013-12-0200:02:32【问题描述】:我想在linuxPATH中添加一个小脚本,这样我就不必在它物理放置在磁盘上的位置实际运行它。脚本很简单,就是通过代理提供apt-ge... 查看详情

如何在bash脚本中传递两个参数或参数[重复]

】如何在bash脚本中传递两个参数或参数[重复]【英文标题】:Howtopasstwoparametersorargumentsinbashscripting[duplicate]【发布时间】:2014-10-0901:20:34【问题描述】:我是bash脚本的新手,我需要您的支持来解决这个问题。我有一个bash脚本“st... 查看详情

如何在 Alpine Docker 容器中运行 Bash 脚本?

】如何在AlpineDocker容器中运行Bash脚本?【英文标题】:HowdoIrunaBashscriptinanAlpineDockercontainer?【发布时间】:2017-12-0121:45:16【问题描述】:我的目录只包含两个文件,Dockerfile和sayhello.sh:.├──Dockerfile└──sayhello.shDockerfile读取FR... 查看详情

如何在只有 1 个连接的 bash 循环中运行多个 sqlplus 查询

】如何在只有1个连接的bash循环中运行多个sqlplus查询【英文标题】:Howtorunmultiplesqlplusqueriesinbashloopwithonly1connection【发布时间】:2018-01-2522:07:21【问题描述】:我正在尝试使用涉及循环的bash脚本通过sqlplus传递多个Oracle查询。但... 查看详情

如何在 bash 中获取 csh 脚本来设置环境 [关闭]

】如何在bash中获取csh脚本来设置环境[关闭]【英文标题】:howtosourceacshscriptinbashtosettheenvironment[closed]【发布时间】:2011-02-1205:43:57【问题描述】:我们在Solaris上运行Oracle,shell默认为csh。所以登录脚本也会在csh中设置oracle_home、o... 查看详情