BASH Wild-карта: выберите все переменные (не содержимое) - PullRequest
3 голосов
/ 12 мая 2011

У меня есть куча переменных, которые я хочу проверить, и если они содержат значение «None», я хочу очистить их.

    var1=(check for some value, sometimes it returns "none")
    var2=(check for some value, sometimes it returns "none")
    var3=(check for some value, sometimes it returns "none")
    someBizzareName=(check for some value, sometimes it returns "none")

    if [[ "${var1}" == "None" ]] ; then
        var1=""
    fi
    if [[ "${var2}" == "None" ]] ; then
        var2=""
    fi

И все это работает отлично и прекрасно, только поскольку у меня есть много varN, я получу тонну if [[ "${varN}" == "None" ]] и Я должен знать их имена; поэтому мне было интересно, так как в BASH очень естественно искать и сопоставлять все, если есть подстановочный знак для переменных, внутри цикла for , который будет соответствовать всем переменным, что-то вроде ${*} (я пробовал, не работает)? Я выполнил все виды поиска, но всегда находил что-то о соответствующей переменной content , а не о самой переменной ..?

Ответы [ 3 ]

6 голосов
/ 12 мая 2011

Все , №Но вы можете соответствовать шаблону (но не *).

$ echo "${!B*}"
BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION
2 голосов
/ 12 мая 2011

Вы также можете использовать встроенный компен:

man bash | less -p 'compgen .option. .word.'
compgen -A variable B
1 голос
/ 12 мая 2011

все, да; -)

Большинство Unix / Linux поддерживают либо env, либо printenv, которые выводят как

 var=value

Команда export без аргументов выведет список всех экспортируемых переменных в вашей среде.

for varAndVal in $( env ) ; do
   case ${varAndVal} in
     *=none ) 
      eval \$${varAndVal}=
      #OR eval unset \$${varAndVal}
     ;;
    esac
 done

Надеюсь, это поможет.

P.S. поскольку вы выглядите новым пользователем, если вы получаете ответ, который помогает вам, не забудьте пометить его как принятый и / или дать ему + (или -) в качестве полезного ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...