`。 example.sh`和`sh example.sh`有什么区别?

`。 example.sh`和`sh example.sh`有什么区别?,第1张

概述`。/ example.sh`和`sh example.sh`有什么区别?

我正在玩bash和数组。 但是执行一个示例脚本,我得到了一个意外的语法错误信息: example.sh: 3: example.sh: Syntax error: "(" unexpected 。这是脚本

#!/bin/bash array=( one two three )

如果我用./example.sh运行脚本,它将起作用,并且不显示任何错误。 但是,如果我运行sh example.sh我收到错误消息。

我以为这两个命令是一样的:

sh example.sh

./example.sh

所以…两者有什么区别?

将别名<cmd>透明地改为“do X then <cmd>”

计数所有.class文件

奇怪的行为与sed命令

在shell脚本中修改导出的variables

linux bash Timer

多个参数,带参数的string

DESTDIR和PREFIX的

Bash脚本与linux中的parsing参数

如何预先在Unix中通过find命令find文件的最后一行

我可以在linux中混合文本与二进制文件?

array_name=(value1 ... valuen)

这是如何仅在bash初始化一个数组。 当你执行./example.sh ,shebang行#!/bin/bash告诉系统使用bash执行。

但是,当你执行sh example.sh , sh被用来执行。 在许多Unix系统(如linux)中, sh相当于bash 。 看来sh是你系统上的一个不同的shell。

当通过./example.sh启动它时,脚本第一行中指定的命令用于解释内容。 所以你的脚本在一个bash执行,其中这样的语法被允许用于数组。

当通过sh example.sh启动时, sh example.sh是用于解释文件内容的命令。 sh是原来的Unix shell(又名Bourne shell),这个shell比bash (Bourne再次shell)粗鲁一点。 你没有这样的数组。 请注意,在脚本的第一行只是解释为注释。

通过使用sh example.sh – 您正在指定该脚本使用的shell解释器。 例如“bash example.sh”而不是“sh example.sh”等。

以这种方式运行脚本会忽略在脚本中指定的“shebang(#!/ bin / bash)”。 既然你写了一个bash脚本,但试图运行它只是“sh”,这就是为什么它失败

通过使用./example.sh, – 您正在指定从当前目录运行脚本。 这将试图在当前所在的任何shell中运行脚本,除非指定了shebang。 既然你有一个“shebang”指定在bash中运行脚本,这就是为什么它正在工作。

总结

以上是内存溢出为你收集整理的`。/ example.sh`和`sh example.sh`有什么区别?全部内容,希望文章能够帮你解决`。/ example.sh`和`sh example.sh`有什么区别?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存