【发布时间】:2020-09-16 02:06:50
【问题描述】:
我有以下包含这个的 shell 文件:
sh
nightlyTag() {
echo $1-alpha.$(date +%Y%m%d).$(($(date +%s%N)/1000000))
}
yarnPubCanaryVersion() {
if [ -z "$1" ]
then
echo "No version argument supplied, maybe you meant v1.0.0?"
return 1
fi
version=`nightlyTag $1`
yarn version --new-version $version --no-git-tag-version
npm publish --tag canary
git reset --hard HEAD
}
我用chmod +x canary.sh 使文件可执行,然后我运行它./canary.sh 然后我的终端更改为sh-3.2$ 然后我尝试像这样nightlyTag 在终端中运行函数,我得到了
sh: nightlyTag: 找不到命令
yarnPubCanaryVersion 也一样。
我在看这个SO question
【问题讨论】:
-
您将
sh用作第一个命令。我不知道你为什么这样做,但此时尚未定义函数,因为它们的定义是在 sh 命令之后进行的。因此,至少,sh必须是最后一个命令。但是如果你非常喜欢sh作为一个 shell,为什么不把它作为你的登录 shell,并source函数定义。