Shell #和之间的空间!在shebang(#!/usr/bin/ksh)
我正在编写一个KornShell脚本,其中涉及使用Shell #和之间的空间!在shebang(#!/usr/bin/ksh),shell,ksh,shebang,Shell,Ksh,Shebang,我正在编写一个KornShell脚本,其中涉及使用#进行进程替换是一个无效的shebang,完全被忽略。没有shebang的脚本的行为取决于您如何调用它。 如果从shell调用:一些shell使用/bin/sh来运行这些脚本;其他人利用自己的目的。假设您在测试该脚本时交互使用的shell(并且发现脚本仅适用于无效的shebang)在后一个集合中,因此您的脚本实际上是使用bash运行的,或者是使用您当时的活动交互shell 如果在没有shell的情况下调用:大多数操作系统将拒绝执行这样的二进制文件
#进行进程替换
是一个无效的shebang,完全被忽略。没有shebang的脚本的行为取决于您如何调用它。
如果从shell调用:一些shell使用/bin/sh
来运行这些脚本;其他人利用自己的目的。假设您在测试该脚本时交互使用的shell(并且发现脚本仅适用于无效的shebang)在后一个集合中,因此您的脚本实际上是使用bash运行的,或者是使用您当时的活动交互shell
如果在没有shell的情况下调用:大多数操作系统将拒绝执行这样的二进制文件
Real David Korn ksh93正确地支持进程替换,但一些第三方克隆和古老的ksh实现不支持。
如果您打算使用ksh,强烈建议使用正版David Korn ksh93(不是mksh、pdksh或其他第三方克隆),并且(就您目前的情况而言)将确保支持进程替换。也有可能/bin/sh
是ksh的符号链接,我通过Cygwin安装了ksh,Cygwin提供了mksh,它不支持进程替换。你能给我指一下如何在windows上安装ksh93的指南吗(对不起,这里是noob)。通过快速的谷歌搜索,看起来是你最好的选择。
array=()
while IFS= read -r -d '' x;do
array+=( "$x" )
done < <(some command)