我正在Windows命令提示符下执行shell脚本,方法是将bash作为打开.sh文件的默认应用程序。我可以在没有输入参数的情况下运行任何脚本,但是对于那些带有输入参数的脚本,我得到错误“无法初始化设备PRN”。我可以看到参数没有传递给脚本。如何从windows命令行向shell脚本传递参数?
这就是我在命令提示符下所做的。
X:> OracleSPExec.sh Procedure Database PROCEDURE= export PROCEDURE DATABASE= export DATABASE
答案 0 :(得分:8)
shell脚本似乎使用print
命令/ builtin,这可能与将文件打印到print.exe
:device的Windows PRN
冲突。
答案 1 :(得分:1)
两个可能的问题:
#!
您必须在脚本的开头添加此行:
#!/usr/bin/bash
有时如果文件是用带有BOM的UTF-8编写的,则无法解释shebang。删除shebang前面的标题(隐藏?)字符。
答案 2 :(得分:1)
我遇到了这个问题,尝试运行一些本地发明的标记脚本,这些脚本曾经工作但我有一台新的笔记本电脑并且它运行的是Windows 10. bash 在我安装的cygwin版本中,似乎没有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
作为解决方法,我在每个脚本的顶部附近添加了这一行:
/* MySQL settings - You can get this info from your web host */
/* The name of the database for WordPress */
define('DB_NAME', 'prefix_name');
/* MySQL database username */
define('DB_USER', 'prefix_user');
/* MySQL database password */
define('DB_PASSWORD', 'password');
这消除了"无法初始化设备PRN"问题。知道为什么这一点在某一点上起作用仍然很好。