2014-10-12 3 views
1

Мне любопытно, есть ли более простой и короткий способ сделать это?Один вкладыш в верхний регистр первой буквы?

foo="FOO" 
foo="${foo,,}" 
echo "${foo^}" //Foo 

bar="bar" 
bar="${bar,,}" 
echo "${bar^}" //Bar 

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

+1

Ваше решение очень хорошо: это чистый Bash и легко читать. Почему вас так беспокоит однострочный лайнер? Собственно, если вы хотите один лайнер, просто напишите на одной строке: 'foo =" FOO "; Foo = "$ {Foo ,,}"; echo "$ {foo ^}" '. И он имеет меньше нажатий клавиш, чем принятое вами решение (и решение, которое вы приняли, выдает внешнюю программу). –

ответ

2

Вы могли бы сделать это с помощью СЭД,

foo="FOO";sed 's/.*/\L&/;s/^./\U&/' <<< "$foo" 
+0

Ouch молдинг быстро! Плюс один, ожидая его, чтобы я согласился. Молодец, сэр, именно то, что я был после! – ehime

+2

Реверсирование вашего возраста даст мне. Поэтому, пожалуйста, не называйте меня сэр. Рад, что это сработало. Вы всегда рады .. –

+0

Touche, рада узнать, что у нас есть следующее поколение способных кодеров, чем;) – ehime

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