我有下面的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'
如果有人能帮我解决这两个错误,我将不胜感激。因为我已经没有主意了。
提前谢谢!
2条答案
按热度按时间lztngnrs1#
如果使用bash,请尝试使用双方括号:
至于
syntax error
,文本周围需要引号(这也意味着转义现有引号或使用单引号):这个
-e
旗帜在那里让bash知道你想要\n
换行。e0uiprwp2#
已经尝试了许多if语句的变体,如:
if [ $(($1 == 1 )) ]
你应该说:关于
Syntax error near unexpected token
否则,这不是因为上面显示的任何代码。它似乎起源于你剧本的其他部分。