我有一个脚本如下
for File in $(cat $IMPORT_PATH/*.txt); do
echo `date +'%m-%d-%Y %H:%M:%S'` "starting $File execute" > $Import_Success_Log
./cli.sh -a execute -i IPROD_$File -fn formrnt -user -password>> $Import_Success_Log
echo `date +'%m-%d-%Y %H:%M:%S'` "$File execute completed" >> $Import_Success_Log
done
./cli.sh -authfile "$AuthFile" -a list -t area -nof > $Import_List_File
for File in $(cat $IMPORT_PATH/*.txt); do
imp_area=`grep -iw "PRD_$File" "$IGC_Import_List_File" | grep -i prod`;
##Testing if imp_area variable has a value
if [ -z "$imp_area" ]; then
echo "- $DataBase Imp Area is not present .Please create." >> $Import_Failure_Log
else
Preview=`grep -iB 3 "The admin setting require" $Import_Success_Log |head -1 | awk '{print $4}'`;
Error=`grep -i error $Import_Success_Log`;
No_Import=`grep -i "does not exist" $Import_Success_Log`;
if [ -z "$Preview" -a -z "$Error" -a -z "$No_Import" ];then
echo "<li> $DataBase </li>" >> $DB_Import_Complete
else
echo "- $Prev is not imported as this database require a preview. >> $Import_Failure_Log
fi
fi
done
此脚本检查特定路径中的 txt 文件并执行特定命令。
现在,由于该路径中可能有许多 txt 文件,所以每次我必须将其他文件重命名为 .txt 以外的文件。
出于这个原因,我想将 txt 文件作为变量/参数传递给脚本。
如下所示:sh script.sh abc.txt。
示例文件内容:File.txt
SQL_SEVRER_ACCOUNT
Customer_DB
Customer_support_DB
Account_DB
或在计划脚本时作为 crontab 条目的参数。
我是脚本新手,对此没有太多想法。
根据您更新的问题更新
要从作为参数传递的文件中读取数据库,您可以使用
(对于所有其他循环也是如此)
然后将其称为
可以使用参数调用脚本,这些参数将在 等中可用
$1
。$2
因此,在您的情况下,您可以这样做然后将脚本称为
PS:这假设在脚本的其余部分(尤其是在您的代码段之前执行的部分)中,值
$1
不会因任何原因而改变。如果您使用参数执行脚本,这些参数会自动存储在变量 $1、$2、$3、...
因此,如果您将脚本执行为:
然后“abc.txt”存储在变量 $1