首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在shell脚本中使用空格执行命令

在shell脚本中使用空格执行命令
EN

Stack Overflow用户
提问于 2016-03-17 18:40:00
回答 3查看 2.3K关注 0票数 0

我有这样的剧本:

build.sh

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash
MSBUILD="/c/Program\ Files \(x86\)/MSBuild/14.0/Bin/msbuild.exe my.sln //p:Configuration=Debug //t:Rebuild"
$MSBUILD

错误

/c/Program:没有这样的文件或目录

我尝试了许多以上的组合。巴什不会认出这条路上的空间。我该怎么做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-18 05:08:37

这就是我最终使用的:

代码语言:javascript
运行
AI代码解释
复制
MSBUILD[0]="/c/Program Files (x86)/MSBuild/14.0/Bin/msbuild.exe"
MSBUILD[1]=./mySolutionName.sln
MSBUILD[2]=/property:Configuration=Debug
MSBUILD[3]=/target:Clean,Build

"${MSBUILD[0]}" "${MSBUILD[1]}" "${MSBUILD[2]}" "${MSBUILD[3]}"

我无意中发现了类似的问题可变展开打交道。还请注意,速记对我不起作用:

"/p:Configuration=Debug"变成"/property:Configuration=Debug"

票数 1
EN

Stack Overflow用户

发布于 2016-03-17 23:51:08

对bash更有洞察力的人应该能够解释这背后的确切机制,因为我不能,但我知道如何应用一种解决方案:只有在展开变量时才使用引号(否则引号显然也会被解释),并使用数组,否则不能使用引号。还请注意,/应该是单一的。

代码语言:javascript
运行
AI代码解释
复制
MSBUILD[0]=/c/Program\ Files \(x86\)/MSBuild/14.0/Bin/msbuild.exe
MSBUILD[1]=my.sln
MSBUILD[2]=/p:Configuration=Debug

"$MSBUILD[@]"
票数 0
EN

Stack Overflow用户

发布于 2016-03-21 14:28:43

当您使用包含空格的路径/命令时,您需要首先引用路径,这将适用于您:

test.proj

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="Build">
    <Message Text="Hello World! $(ABC)" Importance="high"/>
  </Target>

</Project>

build.sh

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash
MSBUILDPATH=c:/Program\ Files\ \(x86\)/MSBuild/14.0/Bin/msbuild.exe
"$MSBUILDPATH" test.proj //t:build //p:ABC=123

或者(反斜杠在里面)

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash
MSBUILD=c\:\\Program\ Files\ \(x86\)\\MSBuild\\14.0\\Bin\\msbuild.exe
"$MSBUILD" test.proj //t:build //p:ABC=123

我正在传递目标(/t:)和属性(/p:),没有问题,只需为它们使用双斜杠即可。还请注意驱动器字母后面的冒号(:)。

如果需要传递包含空格的属性,只需执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
"$MSBUILD" test.proj //t:build //p:ABC="123 456 789"

您可以先定义路径,然后在引号中使用它们来执行命令。

您可以复制粘贴此附件,它将为您工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36075203

复制
相关文章
【shell脚本】$ 在shell脚本中的使用
注释:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数
码缘
2019/07/01
6.3K0
Shell-alias在Shell脚本中的使用
众所周知,shell脚本使用的是非交互式方式,在非交互式模式下alias扩展功能默认是关闭的,此时虽然可以定义alias别名,但是shell不会将alias别名扩展成对应的命令,而是将alias别名本身当作命令执行,如果shell内置命令和PATH中均没有与alias别名同名的命令,则shell会找不到指定的命令。
小小工匠
2021/08/16
2.3K0
shell脚本常用命令及操作_shell脚本执行命令
「-A」 「–after-context」 显示符合范本样式的那一行之外及该行之后的内容
全栈程序员站长
2022/11/07
1.3K0
数组-在Shell脚本中的基本使用介绍
Shell脚本在运维工作中是极其重要的,而数组在shell脚本里的运用无论是在循环或运算方面都是非常实用的一个环节。 下面是对shell脚本中数组方面一些操作在此进行记录,希望能帮助到有兴趣的朋友~ 1.数组定义 [root@bastion-IDC ~]# a=(1 2 3 4 5 6 7 8) [root@bastion-IDC ~]# echo $a 1 一对括号表示是数组,数组元素用“空格”符号分割开。 2.数组读取与赋值 1)得到长度: [root@bastion-IDC ~]# echo $
洗尽了浮华
2018/01/22
4K0
shell脚本中if基本使用方法
if, for, while几乎是所有编程语言的关键字,在Shell编程中也不例外,其中if是使用频率最高的,由于Shell编程中不存在对象(Object)的概念,因此在if的比较判断中主要是对字符串、数字的值进行比较判断的:
IT工作者
2022/05/05
1.1K0
在python脚本中执行shell命令的方法
最近在写python的一些脚本,之前使用python都是在django中使用,可能大部分内容都是偏向于后端开发方面的,最近在写一些脚本的时候,发现了python的另外一种面貌,发现还挺有意思,分享一下,共大家参考。
AsiaYe
2019/12/18
5.4K0
shell中if语句_shell脚本if判断
语法格式 ♦ if空格条件测试 then 命令序列 fi if加空格加一个条件测试,如果这个条件测试结果为真 那么就执行then后面的命令序列,这个命令序列可以是一条命令也可以是多条命令 只要条件测试为真,那么then后面的所有命令都会被执行,直到下一个fi代表if语句结束 如果if语句后面的条件测试失败,那么then后面的所有命令不再被执行
全栈程序员站长
2022/09/23
2.1K0
shell中if语句_shell脚本if判断
在 Shell 脚本中执行语法检查调试模式
写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作。
小小工匠
2021/08/16
1.9K0
Linux教程 - 在Shell脚本中声明和使用布尔变量示例
作者:Linux迷链接:https://www.linuxmi.com/shell-boolean-variables.html
用户6543014
2021/01/07
18.1K0
shell脚本中的数组常见使用方式
shell中数组的定义是使用 小括号来表示的,其中数组元素之间用空格作为分隔,比如:
qsjs
2021/11/24
3.1K0
shell 脚本中 if 各种条件判断的使用
1. if 在shell中语法格式1.1 if-elif-else语法格式if [ command ];thenelif [ command ];thenelsefi1.2 if-else语法格式if [ command ];thenelsefi1.3 if语法格式if [ command ];thenfi2. 字符串运算符 =检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。 !=检测两个字符串是否不相等,不相等返回 true。[ $a != $b ] 返回 true。
特特
2022/12/08
3.9K0
在 Shell 脚本中调用另一个 Shell 脚本的三种方式
fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会新开一个子 Shell 执行脚本 foo.sh,子 Shell 执行的时候, 父 Shell 还在。子 Shell 执行完毕后返回父 Shell。子 Shell 从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回父 Shell。
IT运维技术圈
2022/10/24
3.6K0
在 Shell 脚本中调用另一个 Shell 脚本的三种方式
fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会新开一个子 Shell 执行脚本 foo.sh,子 Shell 执行的时候, 父 Shell 还在。子 Shell 执行完毕后返回父 Shell。 子 Shell 从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回父 Shell。
用户1558438
2018/08/23
4.4K0
在Shell脚本中逐行读取文件的命令方法
为了演示,在此创建一个名为“ mycontent.txt”的文本文件,文件内容在下面:
用户7639835
2021/12/03
9.3K0
shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
转载于:https://blog.51cto.com/8043410/2175024
全栈程序员站长
2021/06/17
1.6K0
shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
Linux中编写Shell脚本
Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。
谢公子
2022/01/19
7.2K0
Linux中编写Shell脚本
使用shc加密shell脚本
继上次发布shell脚本验证ip脚本后,由于脚本可以直接被修改,所以需要对脚本进行加密。
繁花云
2018/07/31
2.6K0
使用 JavaScript 编写 Shell 脚本
作为程序员,在平时的开发中肯定少不了一些命令行操作了。当然,简单的命令大家都是可以拿捏的,但是涉及到一些逻辑的时候还是比较头疼的。
ConardLi
2023/01/09
1.2K0
在shell脚本中添加暂停,按任意键继续
分析一个复杂脚本的时候,有时候需要加点暂停,分段来看,比较清晰 于是参考了一些实现,目前自己用的是这样子的 #add for debug by zqb function get_char() {   SAVEDSTTY=`stty -g`   stty -echo   stty cbreak   dd if=/dev/tty bs=1 count=1 2> /dev/null   stty -raw   stty echo   stty $SAVEDSTTY } enable_pause=1 funct
zqb_all
2019/12/27
6.9K0
一文掌握EOF在Shell脚本中的妙用
 EOF是End Of File的缩写,表示自定义终止符。既然自定义,那么EOF就不是固定的,可以随意设置别名,意思是把内容当作标准输入传给程序,Linux中按Ctrl-d就代表EOF。
非著名运维
2022/06/22
5.8K0

相似问题

使用脚本在shell中执行命令循环

40

Shell脚本:在shell脚本中运行"exit“命令后执行命令

43

更改shell并在shell脚本中执行命令

20

使用shell脚本中的函数调用执行命令

13

在新行shell脚本中依次执行命令

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文