Делайте вот так, его основная петля
#!/bin/bash
for i in {1..25}; do
# put the code you want to loop 25 times here
done
Или однострочный:
$ for i in {1..25}; do #your code here ; done
Чтобы увеличить значения и заменить их, попробуйте следующее:
!/bin/bash
counter=1
for i in {1..25}; do
# Send CURL request
curl -H "text/xml" --data-binary \
"@/home/miracle/email/b2bsoapinput.xml" \
https://x.x.x.x:5550 --insecure -u admin:xxxxx \
>> somaoutput$i.xml
# inc_counter will hold values 1000 bigger than counter
# we will replace value of counter with inc_counter in text file
inc_counter=$(expr $counter + 1000)
# replace values
sed -i "23s/$counter/$inc_counter/g" b2soapinput.xml
# Increment counter by 1000
let "counter+=1000"
done
Не могли бы вы просто передать 2 аргумента своей основной функции?
main()
{
arg1=$1
arg2=$2
if [[ "$arg1" = "-f" ]]
then
($sendFirstEmail "$arg2")
elif [[ "$arg1" = "-s" ]]
then
($sendSecondEmail "$arg2")
elif [[ "$arg1" = "-k" ]]
then
($sendKillEmail "$arg2")
else
echo "valid input not provided"
fi
}
В этом случае $arg2
в main()
становится $1
внутри различных команд send*Email
.
Рискуя повторить сказанное другими :если, как вы говорите, вы вызываете скрипт как (например )./sendEmail.sh -f johndoe@mail.com
, то надо позвонить
main "$1" "$2"и поменять
main()
следующим образом:main() { if [[ "$1" = "-f" ]] then sendFirstEmail "$2" elif [[ "$1" = "-s" ]] then sendSecondEmail "$2" elif [[ "$1" = "-k" ]] then sendKillEmail "$2" else echo "valid input not provided" fi }поэтомувторойаргумент для (самого внешнего )скрипта становится вторым аргументом
main()
, а затем (один и единственный )аргумент для самых внутренних функций. Я изменился $(function_name)
кfunction_name
потому что вы сказали, что $(function_name)
не работает.