Если под числовым вы подразумеваете последовательность одной или нескольких десятичных цифр, вы можете сделать (здесь, используя -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
, если хотите включить другие типы чисел.
Вы можете создавать функции с уже развернутыми параметрами. И поскольку вы можете перезаписать их позже (глобально или в подоболочке ), вы можете как бы «экспортировать их с уже расширенными параметрами».
#!/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"