【发布时间】:2019-04-21 05:42:01
【问题描述】:
我有一个 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 行:`start-if-exists':不是有效标识符
其中my_script.sh 是文件名。
我的脚本适用于 zsh 但在 sh 中失败,我错过了什么?
【问题讨论】:
-
哪个 shell 正是你的
sh?您可以通过查看符号链接的目标找到:realpath /bin/sh。 -
@user803422:该问题涉及 Mac OS X。在 Mac OS X 或 macOS 上,
realpath不存在,/bin/sh不是符号链接,除非已进行非 Apple 修改系统制作。 -
return仅用于返回 8 位状态码,而非任意字符串。