从shell脚本向js脚本传递变量

Passing a variable to a js script from a shell script

本文关键字:脚本 变量 shell js      更新时间:2024-02-07

我有下面的shell脚本,它启动了一个针对mongo-db的js脚本,我希望将一个变量传递给js文件。第二个警告是,我需要将这个变量存储在unix框的某个位置,作为脚本的最后一次运行时间。任何帮助或建议都将不胜感激。

# check if previous job still running
if [ -f /tmp/mapreduce_compound.lck ]
then
    exit
else
   # if no lock file present, create one
   touch /tmp/mapreduce_compound.lck
fi
mongo -u xxx mongo1.pilot.dice.com:27017/tracking /usr/local/gemini/mongodb/tracking/mapReduceFunctionsByGroupIdIterative.js > /tmp/mapReduceFunctionsByGroupIdIterative.txt 2>&1

#remove lock file
rm /tmp/process_nightly.lck

要将其他变量传递到javascript文件,请使用process.argv。这是指向node-js文档的链接。

您可以使用

--eval 'var param="$yourparam";'

传入参数。

注意:这并没有传递太多的参数来定义脚本可以使用的变量,但它确实做到了。

因此,如果你想在中传递shell脚本的第一个参数,你可以这样做:

# check if previous job still running
if [ -f /tmp/mapreduce_compound.lck ]
then
    exit
else
   # if no lock file present, create one
   touch /tmp/mapreduce_compound.lck
fi
MONGOARG=$1
echo $MONGOARG > lastargcalled
mongo -u xxx --eval 'var param="$MONGOARG";' mongo1.pilot.dice.com:27017/tracking /usr/local/gemini/mongodb/tracking/mapReduceFunctionsByGroupIdIterative.js > /tmp/mapReduceFunctionsByGroupIdIterative.txt 2>&1

#remove lock file
rm /tmp/process_nightly.lck