我有一个bash脚本,在其中我定义了下面的函数,
function start-if-exists()
{
if [ "`docker container ls -a|grep $1`" ]; then
echo "Container $1 exists. Starting $1..."
return `docker start $1`
else
echo "Container $1 doesn't exists."
return ""
fi
}
在终端(zsh
)中直接执行上述函数时,不会出现任何错误。但是当我使用sh
命令(sh my_script.sh
)执行它时,我会得到以下错误。
my_script.sh:第10行:“启动-如果-存在”:不是有效的标识符
其中my_script.sh
是文件的名称。
我错过了什么,我的脚本与zsh
一起工作,但在sh
中失败
发布于 2018-11-18 12:06:21
/bin/sh
是bash
,但是当作为/bin/sh
启动时,它以POSIX模式启动。根据bash
手册页,在POSIX模式下:
关于如何解决这类问题的说明:
/bin/sh --version
来查看有关它的信息。它打印了“GNU,版本3.2.57(1)-release (x86_64-apple-darwin17 17)”。bash
引用了man bash
手册页。因为这很长,所以您可能更喜欢将副本保存到文件中,然后在首选的文本编辑器中查看它。原始的man
输出包括过时的下划线和后置空间。您可以通过执行man bash | col -b > file.txt
获得一个没有这些内容的副本。https://stackoverflow.com/questions/53364885
复制