2014-10-21 4 views
2

Чтобы сэкономить когда-нибудь много раз набирать одну и ту же фразу, я определил некоторые переменные в BASH (не bash-файле, а просто командной строке bash). Как небрежно я должен был дать переменную неправильное имя foo1 вместо foo. Итак, я хочу определить foo1.undefine переменная в BASH

Я знаю, что могу установить foo1 пусто и определить foo. Делая это, foo1 все еще существует и может смутить. Я не могу использовать unset, чтобы определить значение foo1, потому что это не переменная среды.

Вопрос: Как определить неопределенность переменной в BASH?

+3

Это не имеет значения, что 'foo1' не является переменной окружения, вы можете использовать' unset', чтобы сбросить его. Также не уверен, что вы подразумеваете под «foo1»? – BroSlow

+0

@BroSlow Спасибо. Я ошибся 'unset $ foo1'. Я такой неосторожный новичок. стыд –

+3

Технически, нет такой вещи, как переменная среды. Все переменные являются переменными оболочки, некоторые из которых могут быть отмечены для экспорта дочерних процессов. Переменные «Environment» - это просто переменные оболочки, которые были созданы при запуске на основе строк, найденных в среде. – chepner

ответ

6

Вам просто нужно использовать команду unset:

unset foo1 

Это не имеет значения, если foo1 не является переменной окружения.

+0

Почему это проголосовало? Я бы добавил «help unset» info, но это, очевидно, хороший ответ. – BroSlow

+0

Я думаю, что это из-за вашего комментария, но оно было опубликовано в одно и то же время, извините. –

+0

Нет проблем. Думаю, мы печатали в то же время. Случается все время на SO, и определенно не является причиной для голосования правильного ответа. Хотя похоже, что человек удалил его. – BroSlow

2

в @BroSlow комментарии, да вы будете использовать unset:

$ foo1=something 
$ foo="something else" 
$ set | grep ^foo 
foo='something else' 
foo1=something 
$ unset foo1 
$ set | grep ^foo 
foo='something else' 
+0

Я думаю, что вопрос не может быть четко сформулирован, но OP просит способ избежать функции «bash» для оценки неопределенных переменных-как-пустых. –

+0

Действительно? Несмотря на то, что ОП дважды печатал «Как определить переменную»? –

+0

Плохо сформулированный, как я уже сказал. «Как небрежно я должен был присвоить переменную неправильное имя foo1 вместо foo. Итак, я хочу, чтобы undefine foo1». Какая уместность была бы для этого, если бы OP не захотел спасти себя от потерянной от времени отладки проблемы, где 'echo $ {foo1}' не останавливает выполнение, просто прогрывается весело? –

0

Вы можете использовать set -u для того, чтобы «Попытка использовать неопределенную переменную сообщение выдает ошибку, и заставляет выход».

Или добавьте -u в хижину линии следующим образом:

#!/usr/bin/bash -u 
Смежные вопросы