5

我通过将 bash 作为打开 .sh 文件的默认应用程序在 Windows 命令提示符下执行 shell 脚本。我可以在没有输入参数的情况下运行任何脚本,但对于那些带有输入参数的脚本,我会收到错误“无法初始化设备 PRN”。我可以看到参数没有传递给脚本。如何从 Windows 命令行将参数传递给 shell 脚本?

这就是我在命令提示符下所做的。

X:> OracleSPExec.sh 过程数据库
程序=
出口程序
数据库=
导出数据库
4

3 回答 3

11

似乎 shell 脚本使用print命令/内置,这可能与print.exe将文件打印到的 windows 冲突PRN:设备。

于 2013-04-26T15:27:01.660 回答
1

两个可能的问题:

  1. 缺少shebang#!

您必须在脚本的开头添加这一行:

 #!/usr/bin/bash
  1. 文件开头的 Unicode BOM

有时,如果文件是用带有 BOM 的 UTF-8 编写的,则无法解释 shebang。删除 shebang 前面的标题(隐藏?)字符。

于 2015-11-06T10:59:40.057 回答
1

我遇到了这个问题,试图运行一些本地发明的标记脚本,这些脚本曾经可以工作,但我有一台新笔记本电脑,它运行的是 Windows 10。我安装的 cygwin 版本中的bash似乎没有print一个内置命令(它确实有printenv和作为外部命令)并且除了以下命令之外printf没有其他命令:printSystem32

$ type print
print is hashed (/cygdrive/c/WINDOWS/system32/print)

$ type echo
echo is a shell builtin

作为一种解决方法,我在每个脚本的顶部附近添加了这一行:

alias print=echo

这消除了“无法初始化设备 PRN”的问题。很高兴知道为什么这在某一时刻有效。

于 2016-12-13T17:14:44.410 回答