Есть ли способ экспортировать функции с уже расширенными параметрами?

Если под числовым вы подразумеваете последовательность одной или нескольких десятичных цифр, вы можете сделать (здесь, используя -iдля обновления файла в -месте):

perl -lani -e '
  BEGIN{$n = 0}
  if ($F[1] =~ /^\d+\z/) {print} else {$n++}
  END {print "$n line(s) were removed"}' your-file

Вы можете адаптировать регулярное выражение ^\d+\z, если хотите включить другие типы чисел.

0
26.11.2021, 17:13
1 ответ

Вы можете создавать функции с уже развернутыми параметрами. И поскольку вы можете перезаписать их позже (глобально или в подоболочке ), вы можете как бы «экспортировать их с уже расширенными параметрами».

#!/usr/bin/env bash

export PARAMETER="main"

eval "my_func(){
  echo \"$PARAMETER \$1\"
}"

export -f my_func

# Run the other script
./sub.sh

или

#!/usr/bin/env bash

export PARAMETER="main"

my_func(){
  echo "$PARAMETER $1"
}

export -f my_func

# Run the other script
(
eval "my_func(){
  echo \"$PARAMETER \$1\"
}"

./sub.sh
)

Очевидно, в этом нет особого смысла. Поскольку переменная не перезаписывается до того, как вы захотите использовать ее старое содержимое.

#!/usr/bin/env bash

LOCAL_PARAMETER="sub"
my_func "$LOCAL_PARAMETER"
0
27.11.2021, 11:21

Теги

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