使用' sh'运行脚本时,我无法使用内置bash命令

时间:2016-04-04 21:21:11

标签: linux bash shell

当我执行我的脚本sh myscript.sh时,我收到一条错误消息,指出[[:是一个意外的操作符'但是当我在bash模拟器中运行我的脚本时({ {3}})它有效并且不会返回此错误。此外,当我在模拟器中使用sh运行脚本时,它可以工作,即使在我的服务器上也不会返回错误。

我已经检查了下面的链接,根据我的理解,我需要使用bash命令。 sh命令有什么问题?如何启用[[:等功能?

注意:我是学生,因此我只能在学校运行bash终端。因此,任何可以保证不会返回此错误的帮助都将非常受欢迎。

http://www.tutorialspoint.com/execute_bash_online.php

4 个答案:

答案 0 :(得分:4)

简单回答就是使用bash myscript.sh。如下所述,[[语法是特定于bash的,而不是sh。

支持

这是两个独立的shell,每个shell都有自己的脚本语言变体。一个粗俗的比喻就是bash是sh,c ++是c。 Bash有更多的功能,一些更简单的语法,但它们有很多共同之处。

如果您的文件顶部有#!/bin/bash,那么它就是一个bash脚本。如果它不可执行,请输入bash yourscript.sh,如果不可执行,则输入./yourscript.sh

如果你有#!/bin/sh,那么它就是一个sh脚本。您可以按照上述原则运行此操作。

答案 1 :(得分:2)

许多Linux发行版使用比Bash更小,更简单的shell实现来实现其默认的sh二进制文件。他们出于各种原因这样做。如果您需要Bash,请明确运行bash

答案 2 :(得分:1)

[[ Bash 关键字,与[命令类似(但功能更强大)。

除非你为POSIX sh撰写文章,否则建议使用[[代替[

答案 3 :(得分:1)

你可以这样想:
有许多人类语言" (法语,日语,英语,印地语等)

有许多不同的贝壳语言" (sh,csh,tcsh,zsh,bash等)
shbash视为语言,而不是命令。

您遇到的错误是因为您的计算机希望您在sh中与之通话,但实际上您正在bash与之通话。这就像向德国翻译提供法语文件......

因此,要解决此问题,您只需要通知您的计算机您的脚本是用bash编写的。

要执行此操作,只需将此行添加到脚本文件的最顶部:

<强>#!/斌/庆典