у меня есть сценарий, который я использую для выполнения различных команд через несколько сайтов на основе числа сайта (см. сценарий ниже), я делаю это путем выполнения ./script-name 121
для выполнения на сайте 121, я могу также выполнить его на нескольких сайтах сразу только путем добавления большего количества чисел. то, что я хотел бы смочь сделать, создают простые текстовые файлы, содержащие группы числа сайта, и прочитали сценарий это вместо того, чтобы вывести число каждый раз, любые идеи
#!/bin/bash
while [ "TT$1" != "TT" ]
do
if [ "$1" == "6" -o "$1" == "33" -o "$1" == "55" -o "$1" == "74" -o "$1" == "80" -o "$1" == "91" -o "$1" == "169" ]
then
NET=4
ST=$1
else
if [ "$1" -lt "251" ]
then
NET=1
ST=$1
else
NET=2
ST=`expr $1 - 250`
fi
fi
echo $NET
echo $ST
ssh root@10.$NET.$ST.210 -C "service xvfbd stop && service xvfbd start && service yespayd start && service yespayd status"
shift
done
Вы хотите циклично выполниться от текстового файла: используйте, в то время как считано
Пример:
while read line
do
echo -e "$line\n"
done <file.txt
Ваш сценарий может быть похожим на это (я не протестировал его),
выполненный: ./myscript.sh inpufile.txt
#!/bin/bash
#
# This script takes a filename as argument
# The FILE contains a number per line
# Test argument
if [ -z "$1" ]; then
echo "No argument supplied"
exit
else
inputfile=$1
if [ ! -f $inputfile ]; then
echo "InputFile "$inputfile" not found"
exit
fi
fi
# Loop
while read line
do
if [ "$line" == "6" -o "$line" == "33" -o "$line" == "55" -o "$line" == "74" -o "$line" == "80" -o "$line" == "91" -o "$line" == "169" ]
then
NET=4
ST=$line
else
if [ "$line" -lt "251" ]; then
NET=1
ST=$line
else
NET=2
ST=`expr $line - 250`
fi
fi
echo $NET
echo $ST
ssh root@10.$NET.$ST.210 -C "service xvfbd stop && service xvfbd start && service yespayd start && service yespayd status"
done <$inputfile