我正在玩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`有什么区别?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)