Хорошо, попробуйте этот способ.
1) Создайте отдельный файл /mypath/dir/login.info
с таким содержимым (имя пользователя / пароль в отдельных строках):
foobar
F008AR
2)Измените свой test.sh следующим образом:
#!/bin/bash
if [ $# != 4 ]; then
exit 1
fi
DIRDT=`date '+%Y%m%d'`
TSTDIR=$2/test/$DIRDATE
[ ! -d "$TSTDIR" ] && ( mkdir "$TSTDIR" || { echo 'mkdir command failed'; exit 1; } )
IFS="
"
arr=( $(<$2/$4) )
#echo "username=${arr[0]} password=${arr[1]}"
perl /home/dev/tstextr.pl -n $1 -b $2 -d $TSTDIR/ -s $3 -u ${arr[0]} -p ${arr[1]} -f $DIRDT
3) Используйте команду cron следующим образом:
30 10 * * 5 sh /home/test.sh hostnm101.abc /mypath/dir test login.info >> /logs/mytst.log 2>&1
Сводка
- IFS стоитдля внутреннего разделителя полей (IFS) в bash
Я использую его следующим образом:
IFS="
"
Что означает создание символа новой строки в качестве разделителя полей (поскольку мы храним имя пользователя ипароль в 2 отдельные строки).А затем эта строка для чтения файла /mypath/dir/login.info
в массив:
arr=( $(<$2/$4) )
- Первая строка (имя пользователя) читается в
$arr[0]
- Вторая строка (пароль) читаетсяв
$arr[1]
Вы можете повторить его, чтобы проверить прочитанное содержимое:
echo "username=${arr[0]}"
echo "password=${arr[1]}"