Вызов функции с аргументом внутри функции, которой нужен другой аргумент

Делайте вот так, его основная петля

#!/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
0
21.06.2019, 19:11
2 ответа

Не могли бы вы просто передать 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.

1
28.01.2020, 02:30

Рискуя повторить сказанное другими :если, как вы говорите, вы вызываете скрипт как (например )./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)не работает.

0
28.01.2020, 02:30

Теги

Похожие вопросы