我有以下简单的脚本:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
如果我使用sh file.sh
以下命令输出:
Bash version ...
{1..99..2}
如果我使用bash file.sh
以下命令输出:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
我有两个查询:
如果我写了一个指定shell的shabang行,那么无论我使用sh file.sh
还是,它都不应与bash一起运行bash file.sh
?
我知道$BASH_VERSION
sh无法识别,但是for循环有什么问题?为什么不打印数字?
sh
,伯恩贝壳(Bourne shell)很旧。它的行为由POSIX标准指定。如果您想要新的行为,可以使用bash
,Bourne Again shell,它会一直添加新功能。在许多系统上,sh
just是bash
,并bash
在以该名称运行时打开兼容模式。在Ubuntu上sh
是dash
Debian Almquist shell。
支撑扩展是一个相对较新的功能,在较旧的基础上也将不可用。它当然不应该进入sh
。
仅当您将脚本作为可执行文件调用时,才遵守shebang行:
./myscript.sh
我可以给出一个脚本,但仍然可以通过运行以下命令在Python中打开它:
python myscript.sh
在Unix和Linux上查看以下出色的问题:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句