Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当I';我直接通过sh执行bash脚本_Bash_Sh_Increment - Fatal编程技术网

当I';我直接通过sh执行bash脚本

当I';我直接通过sh执行bash脚本,bash,sh,increment,Bash,Sh,Increment,我有一个文件new.sh i=5 i=$[i+1] echo $i 当我执行./new.sh时,它显示6。但当我执行“shnew.sh”时,它显示 $[i+1] 作为输出。我只想知道为什么,我需要一个能同时处理这两种文件的代码。操作系统根据第一行决定文件的类型。让它: #!/bin/bash 操作系统根据第一行决定文件的类型。让它: #!/bin/bash 这种行为是不同的,因为当bash作为sh运行时,它会关闭特定于bash的功能,并更接近标准 如果希望代码在bash和sh下工作相同,

我有一个文件new.sh

i=5
i=$[i+1]
echo $i
当我执行./new.sh时,它显示6。但当我执行“shnew.sh”时,它显示

$[i+1]

作为输出。我只想知道为什么,我需要一个能同时处理这两种文件的代码。

操作系统根据第一行决定文件的类型。让它:

#!/bin/bash

操作系统根据第一行决定文件的类型。让它:

#!/bin/bash

这种行为是不同的,因为当
bash
作为
sh
运行时,它会关闭特定于
bash
的功能,并更接近标准


如果希望代码在
bash
sh
下工作相同,则需要在
bash
语法的
sh
子集中编写代码。

行为不同,因为
bash
作为
sh
运行时,它关闭特定于bash的功能,并更接近标准


如果希望代码在
bash
sh
下都能正常工作,则需要在
bash
语法的
sh
子集中编写代码。

许多Linux发行版使用dash作为脚本的标准shell,因此/bin/sh只是/bin/dash的符号链接,它更轻量级,但与bash相比,它的一些功能落后。检查以下各项:

ls -l /bin/sh

如果您想编写与POSIX兼容的脚本,应该使用foo=$n$(n=n+1)而不是foo=$((n++)和foo=$((n=n+1))而不是foo=$(++n))。$[]格式已被弃用,应避免使用。

许多Linux发行版使用dash作为脚本的标准shell,因此/bin/sh只是/bin/dash的符号链接,它更轻量级,但与bash相比有些功能落后。检查以下各项:

ls -l /bin/sh

如果您想编写与POSIX兼容的脚本,应该使用foo=$n$(n=n+1)而不是foo=$((n++)和foo=$((n=n+1))而不是foo=$(++n))。$[]表格已弃用,应避免使用。

sh new.sh
覆盖shebang。
sh new.sh
覆盖shebang。