2011-06-04 3 views
0

Почему это не работает:Преобразовать переменный в нижнюю строку и конкатенировать

MDB="user_"+${PROJECT | tr '[:upper:]' '[:lower:]'} 

Пожалуйста, помогите. Благодарю.

+1

Пожалуйста, не помещайте тег Perl, если это не проблема Perl. –

+1

Это действительно помогло бы, если бы вы включили ожидаемый вывод и каково значение PROJECT, как обычно, то есть оно будет иметь пробелы в значении. Удачи. – shellter

+0

@ Давид В. О., извините. – emurad

ответ

2
MDB="$(echo "user_$PROJECT" | tr '[:upper:]' '[:lower:]')" 

(Примечание: внешние двойные кавычки не являются строго необходимыми здесь, но есть много мест, где оставить их out'll вызывают тонкие ошибки, так Я склонен ошибаться на стороне чрезмерного использования.)

2
MDB="user_${PROJECT}" | tr "[:upper:]" "[:lower:]" 

в Баш

+0

MDB = "user _ $ {PROJECT}" | tr "[: upper:]" "[: lower:]" echo $ MDB; сохраняет пустую строку. Однако echo "user _ $ {PROJECT}" | tr "[: upper:]" "[: lower:]" работает. Мне нужен результат, сохраненный в var. – emurad

+0

Это не выполняет команду. Вы должны поместить оценку в «$ (..)». –

1

Попробуйте это:

cat MDB="user_${PROJECT}| tr '[a-z]' '[A-Z]' > user_${PROJECT} // OR whatever you want to name your file. 
+1

Вы протестировали это? Вы просто помещаете строку в файл, и вы не включили заключительную цитату. «//» также не является комментарием в BASH. Добавление cat ничего не делает, поскольку это не имя файла. –

3

Что вы пытаетесь сделать? Вы пытаетесь перевести все, что ${PROJECT} в нижний регистр перед установкой MDB?

MDB="user_$(echo ${PROJECT} | tr [:upper:] [:lower:])" 

The $(..) говорит оболочке, чтобы выполнить команду и заменить текст стандарта этой команды.

1

У вас есть небольшая синтаксическая ошибка в вашем скрипте bash. Изменить это просто немного так, что он выглядит следующим образом:

MDB="$(echo "user_$PROJECT" | tr '[:upper:]' '[:lower:]')" 

Удачи!

Смежные вопросы