gpt4 book ai didi

linux - 对 bash 脚本命令行参数完全困惑

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:24 24 4
gpt4 key购买 nike

我有以下 bash 脚本文件 callee.sh,它是从另一个脚本文件 caller.sh 调用的。

callee.sh如下:

if [ $1 -eq  1 ];
then
echo inside $1
source ~/MYPROGRAMSRC/standAloneWordCount.sh $2
#echo "inside standalone branch"
#echo $1

elif [ $1 -eq 2 ];
then
#echo "inside distributed branch"
#echo $1

else
echo invalid option for first argument-\n Options:\n "distributed"\n or\n "standalone"\n


fi

正如大多数人可能会说的那样,这是我用来根据参数决定是在分布式模式还是独立模式下运行 hadoop 的脚本。

这个脚本是从 caller.sh 中调用的,如下所示

source callee.sh $2 $counterGlobal

其中 $2 是 1 或 2 的数字,$counterGlobal 是某个整数。

我的问题是 callee.sh 中的 if 条件永远不会计算为 True,因此我从 callee.sh 中调用的脚本 standAloneWordCount.sh 永远不会被调用。我正在使用 bash shell 运行并尝试了 if 语句的许多变体,例如:

if [ $(($1 == 1 )) ]  -- (1)

在 -- (1) 行上方的 echo 语句中,表达式 $(($1 == 1)) 的计算结果为 1,所以我很困惑为什么我无法满足 if 条件。

此外,我不断收到错误提示:

syntax error near unexpected token `else'

如果有人能帮助我解决这两个错误,将不胜感激。因为我已经没有想法了。

提前致谢!

最佳答案

have tried many variants of the if statement like:

if [ $(($1 == 1 )) ]

你应该这样说:

if (($1 == 1)); then
...
fi

关于 Syntax error near unexpected tokenelse'`,这不是因为您在上面显示的任何代码。它似乎源自您脚本的其他部分。

关于linux - 对 bash 脚本命令行参数完全困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com