bash - 如何将 arg 值传递给 cronjob 中的 shell 脚本
我有一个看起来像这样的 cron 条目,它可以工作:(传递 5 个输入)
30 10 * * 5 sh /home/test.sh hostnm101.abc /mypath/dir test foobar F008AR >> /logs/mytst.log 2>&1
我想更改它,因此我将输入 (4,5) foobar
和 F008AR
存储在单独的文件并读入 script test.sh ($4,$5)
test.sh
#!/bin/bash
if [ $# != 5 ]; then
exit 1
fi
DIRDT=`date '+%Y%m%d'`
TSTDIR=$2/test/$DIRDATE
[ ! -d "$TSTDIR" ] && ( mkdir "$TSTDIR" || { echo 'mkdir command failed'; exit 1; } )
perl /home/dev/tstextr.pl -n $1 -b $2 -d $TSTDIR/ -s $3 -u $4 -p $5 -f $DIRDT
对于这 (2) 个输入值,有没有简单的方法可以在 cron 中执行此操作?谢谢。
I have cron entry that looks like this which works: (passing in 5 inputs)
30 10 * * 5 sh /home/test.sh hostnm101.abc /mypath/dir test foobar F008AR >> /logs/mytst.log 2>&1
I want to change it so I store inputs (4,5) foobar
and F008AR
in a separate file and read in by
script test.sh ($4,$5)
test.sh
#!/bin/bash
if [ $# != 5 ]; then
exit 1
fi
DIRDT=`date '+%Y%m%d'`
TSTDIR=$2/test/$DIRDATE
[ ! -d "$TSTDIR" ] && ( mkdir "$TSTDIR" || { echo 'mkdir command failed'; exit 1; } )
perl /home/dev/tstextr.pl -n $1 -b $2 -d $TSTDIR/ -s $3 -u $4 -p $5 -f $DIRDT
Is there any easy way to do this within the cron for those (2) input values? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,试试这个方法。
1) 创建一个单独的文件
/mypath/dir/login.info
,其内容如下(用户名/密码在单独的行中):2)像这样修改 test.sh:
3)让你的cron命令像这样:
摘要
我像这样使用它:
这意味着将换行符作为字段分隔符(因为我们将用户名和密码存储在2个单独的行中) 。然后这一行将文件
/mypath/dir/login.info
读入数组:$arr[0]
$arr[1]
您可以 echo 来检查读取的内容:
Alright try this way.
1) Create a separate file
/mypath/dir/login.info
with content like this (username/password in separate lines):2) Modify your test.sh like this:
3) Have your cron command like this:
Summary
I am using it like this:
Which means make new line character as field separator (since we are storing username and password in 2 separate lines). And then this line to read file
/mypath/dir/login.info
into an array:$arr[0]
$arr[1]
You can echo it to check read content:
cron 使用 sh -c 执行,因此:
cron executes with sh -c so: