我通过将 bash 作为打开 .sh 文件的默认应用程序在 Windows 命令提示符下执行 shell 脚本。我可以在没有输入参数的情况下运行任何脚本,但对于那些带有输入参数的脚本,我会收到错误“无法初始化设备 PRN”。我可以看到参数没有传递给脚本。如何从 Windows 命令行将参数传递给 shell 脚本?
这就是我在命令提示符下所做的。
X:> OracleSPExec.sh 过程数据库 程序= 出口程序 数据库= 导出数据库
似乎 shell 脚本使用print
命令/内置,这可能与print.exe
将文件打印到的 windows 冲突PRN
:设备。
两个可能的问题:
#!
您必须在脚本的开头添加这一行:
#!/usr/bin/bash
有时,如果文件是用带有 BOM 的 UTF-8 编写的,则无法解释 shebang。删除 shebang 前面的标题(隐藏?)字符。
我遇到了这个问题,试图运行一些本地发明的标记脚本,这些脚本曾经可以工作,但我有一台新笔记本电脑,它运行的是 Windows 10。我安装的 cygwin 版本中的bash似乎没有print
一个内置命令(它确实有printenv
和作为外部命令)并且除了以下命令之外printf
没有其他命令:print
System32
$ type print
print is hashed (/cygdrive/c/WINDOWS/system32/print)
$ type echo
echo is a shell builtin
作为一种解决方法,我在每个脚本的顶部附近添加了这一行:
alias print=echo
这消除了“无法初始化设备 PRN”的问题。很高兴知道为什么这在某一时刻有效。