Bash - добавление параметров к определенной функции в операторе if? - PullRequest
1 голос
/ 06 мая 2020

Я написал короткий сценарий для выполнения задачи для проекта, над которым я работаю. Jist - это две его функции с предварительно сконфигурированными параметрами и установкой оператора if, которая ведет к go. Тем не менее, потенциально существует больше переменных, которые мне нужно учитывать при этом, я решил, что могу сделать это, добавив еще один параметр. Однако я не понял, какие дополнительные функции мне нужно настроить.

Итак, формула выглядит примерно так:

    function1 () {
       foo $1 $2 -etc -etc -etc} 
    function2 () {
       foo $1 $2 -cte -cte -cte}
    if [ X = Y ] 
    then $(function1 $1 $2)
    else $(function2 $1 $2)

Я мог бы просто расширить это, определив больше функций. , однако, поскольку дополнительные формулы, вероятно, будут такими же, хотя с добавлением одного или двух параметров, мне интересно, если вместо записи нескольких функций можно просто добавить параметры к предыдущей функции во время if statment.

Понятия не имею, как это должно быть, но для демонстрации скажем что-то вроде этого:

if [ X = Y ] && [ Y = Z ]
then $(function1 $1 $2 '--optionA')
else $(function1 $1 $2)

EDIT: Вот мой код:

function wpull_init {
        wpull $1 --warc-file "$ARCHIVELOC/$2/$2" --warc-cdx \
        --warc-header="Operator:$ARCHIVEOPERATOR" \
        --output-file $ARCHIVELOC/$2/$2.log --delete-after --database $ARCHIVELOC/$2/$2.db \
        --convert-links --backup-converted -r -l inf --escaped-fragment --strip-session-id\
        --restrict-file-names=windows \
        --span-hosts-allow linked-pages,page-requisites --page-requisites --sitemaps \
        --reject-regex "/login\.php" --no-check-certificate --no-robots \
        --retry-connrefused --retry-dns-error --wait 1 --waitretry 600 --random-wait \
        --timeout 60 --session-timeout 10800 --tries 3 \
        --limit-rate 2000 --concurrent 5 \
        --user-agent "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27" \
        --quiet
        }
function warc-setup {
 if [[ -f $ARCHIVELOC/$2/$2.warc.gz ]];
  then echo "$2.warc.gz exists, running append" && sleep 2 && wpull_init $1 $2 '--warc-append'
  else echo "No file exists, ensuring directory exists for files" && mkdir -p "$ARCHIVELOC/$2" && sleep 2 && echo "Starting up wpull_init" && sleep 2 && wpull_init $1 $2
  fi}
warc-setup $1 $2

я бы хотел добавить параметр --war c -append в исходную функцию wpull_init на этапе формулы if.

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Я обошел это, очистив несколько функций и просто добавив в одну функцию через переменные с операторами if. Хотя с тех пор я перешел на опции GetOpts.

0 голосов
/ 06 мая 2020

Вы можете попробовать создать свою команду перед выполнением.

function foo_call {
    CALL=$(echo "foo $1 $2 $3 $4")
    $($CALL)
}

if [ X = Y ] && [ Y = Z ]
then 
    function1 "arg_1" "arg_2" "--optionA"
else 
    function1 "arg_1" "arg_2"
fi

Здесь для второго случая 3 и 4 доллара будут пустыми. Таким образом, переменная CALL будет хранить foo arg_1 arg_2, а в первом случае - foo arg_1 arg_2 --optionA.

...