stephanmg
stephanmg

Reputation: 766

Combine two expression in Bash

I did check the ABS, but it was hard to find a reference to my problem/question there.

Here it is. Consider the following code (Which extracts the first character of OtherVar and then converts MyVar to uppercase):

   OtherVar=foobar
   MyChar=${OtherVar:0:1} # get first character of OtherVar string variable
   MyChar=${MyChar^} # first character to upper case

Could I somehow condense the second and third line into one statement?

P.S.: As was pointed out below, not needs to have a named variable. I should add, I would like to not add any sub-shells or so and would also accept a somehow hacky way to achieve the desired result.

P.P.S.: The question is purely educational.

Upvotes: 0

Views: 168

Answers (2)

Léa Gris
Léa Gris

Reputation: 19545

You could do it all-in-one without forking sub-shell or running external command:

printf -v MyChar %1s "${OtherVar^}"

Or:

read -n1 MyChar <<<"${OtherVar^}"

Another option:

declare -u MyChar=${OtherVar:0:1}

But I can't see the point in such optimization in a bash script.

There are more suitable text processing interpreters, like awk, sed, even perl or python if performance matters.

Upvotes: 4

7koFnMiP
7koFnMiP

Reputation: 477

You could use the cut command and put it in a complex expression to get it on one line, but I'm not sure it makes the code too much clearer:

OtherVar=foobar
MyChar=$(echo ${OtherVar^} | cut -c1-1) # uppercase first character and cut string

Upvotes: 0

Related Questions