【问题标题】:What is the difference in command line argument syntax between bat and sh?bat 和 sh 的命令行参数语法有什么区别?
【发布时间】:2016-11-28 16:33:19
【问题描述】:
我正在尝试在 shell 脚本(实际上是一个 git 挂钩)中运行 robocopy(Windows 健壮副本)。在我添加选项 /XO 之前它工作正常。
所以命令:
robocopy source destination a.txt
在 .bat 和 .sh 文件中正常工作。
但是命令
robocopy source destination a.txt /XO
在 .sh 中失败并出现错误:
错误:参数 #3 无效:“C:/Program Files/Git/XO”
而它在 bat 文件中可以正常工作。
所以问题在于 robocopy 的 /XO 选项;更具体地说,shell 脚本将参数传递给 robocopy 的方式。
请提出解决方案。
【问题讨论】:
标签:
git
bash
shell
batch-file
robocopy
【解决方案1】:
如果您为此使用Git Bash,它会智能地将 Unix 风格的选项转换为 Windows 风格的选项。因此,例如,命令:
robocopy source destination a.txt -xo
会告诉你它正在使用/xo 选项:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Tue Feb 06 15:58:53 2018
Source : c:\gitbashdir\source
Dest : c:\gitbashdir\destination\
Files : a.txt
Options : /COPY:DAT /XO /R:1000000 /W:30
: blah blah blah :
Ended : Tue Feb 06 15:58:53 2018