How to Convert Bash String to Uppercase? [7 Methods]

In bash scripting, converting text to lowercase or uppercase can make it easier to handle the input or output formats of files, process or compare data, and deal with case-sensitive operations, such as matching strings or file names.

To convert a string to uppercase, check the following methods:

  1. Using Parameter Expansion: ${String^^}
  2. Using the “tr” command: tr [Option] [set1] [set2]
  3. Using sed command: sed 's/pattern/replacement/' filename
  4. Using awk command: echo "input_str" | awk 'pattern { action }'
  5. Using perl command: echo "$input_string" | perl [Option] 'action'
  6. Using declare command: declare -u variable_name
  7. Using ASCII value with a case statement and for loop.

Dive into the article to learn these methods of how to convert a Bash string to uppercase in detail.

1. Using Parameter Expansion

Using the parameter expansion, you can simply convert the characters of the input string into uppercase. Parameter expansion refers to getting and modifying the value stored in the parameter or variable. If you use the^and^^then you can convert the first character and all characters to uppercase respectively.

  1. To convert the first character to uppercase use the^operator. Check the following code:
    #!/bin/bash
    
    # Define a variable
    my_variable="the first input string"
    
    # Convert the variable to uppercase
    uppercase_variable="${my_variable^}"
    
    # Print the result
    echo "Original string: $my_variable"
    echo "Uppercase: $uppercase_variable"
    EXPLANATION

    Firstly the script declares a string into a variable namedmy_variable. Then the${my_variable^}syntax converts the first character of the input string to uppercase. Later, the echo command prints the converted output in the terminal.

    Using parameter expansion, convert the first letter to uppercase

    The output shows the operator^has converted the first character “t” to uppercase “T”.

  2. To convert all the characters of a bash string to uppercase, use the^^operator. Follow the script below:

    #!/bin/bash
    
    # Define a variable
    my_variable="All the characters are converted to uppercase"
    
    # Convert the variable to uppercase
    uppercase_variable="${my_variable^^}"
    
    # Print the result
    echo "Original string: $my_variable"
    echo "Uppercase: $uppercase_variable"
    EXPLANATION

    The script uses a bash parameter expansion syntax${my_variable^^}which converts all the characters of themy_variableto uppercase.

    Converting the string to uppercase using parameter expansion

    The output shows the^^operator in the parameter expansion has converted the input string to uppercase.

Note: Bash 4.0 and above versions support the^and^^operator for converting the characters to uppercase.

2. Using “tr” Command

To convert a bash string to uppercase, you can use the tr command. In bash scripting, the tr command translates and deletes characters from a string. You can also use this command for replacing, searching, and converting the case of the string. Check out the script below:

#!/bin/bash

lowercase="All the characters have been converted to uppercase"
uppercase=$(echo "$lowercase" | tr '[:lower:]' '[:upper:]')

echo "Uppercase: $uppercase"
EXPLANATION

At first, the bash script declares a string in a variable namedlowercase. In theuppercase=$(echo "$lowercase" | tr '[:lower:]' '[:upper:]'), the | (pipe) symbol pipes the output of theechocommand to thetrcommand. Then the tr command matches the lower-case characters and replaces them with uppercase characters.

Converting the bash string to uppercase using the tr command

The output shows the script has converted the input string to uppercase.

3. Using “sed” Command

To convert the input string to uppercase, you can use the sed command. The sed command is a simple yet very useful command for stream editors in bash scripting. Using the backslash (\) with theUinside the sed command you can easily convert the string to uppercase. Take a look at the following script below:

#!/bin/bash

# Define a string
my_string="This is the new string."

# Convert the string to uppercase using sed
uppercase_string=$(echo "$my_string" | sed 's/.*/\U&/')

# Print the result
echo "Original input: $my_string"
echo "Uppercase: $uppercase_string"
EXPLANATION

Firstly, thesedcommand takes the output through the pipe operator. In the sed command/(.*/)captures the string and the\U&converts the strings’ characters to uppercase. The's/.*/\U&/'converts all the characters to the uppercase of the input string.

Converting bash string to uppercase using sed command

So, using the sed command, the script successfully converted the input to uppercase characters.

Convert Specific Character to Uppercase

To convert all the occurrences of a specific character in a string to uppercase, check the following script below:

#!/bin/bash

lowercase="hello world"
uppercase=$(echo "$lowercase" | sed 's/o/\U&/g')

echo "Uppercase: $uppercase"
EXPLANATION

The pipe operator takes the output of the echo command to thesedcommand. Inside the sed command, 's/o/\U&/g'is a command substitution that converts all occurrences of “o” to uppercase.

Converting a specific character in a string to uppercase

The image shows the script has converted a specific character “o” of the string to uppercase.

Convert Specific Element to Uppercase in a File

To convert a specific element to uppercase in a file, firstly you need to specify the file name. Once you specify the file name then perform the necessary operations using the commands. Check out the script below:

#!/bin/bash

# Check if filename is provided
if [ -z "$1" ]; then
echo "Usage: $0 <filename>"
exit 1
fi

filename="$1"

# Check if file exists
if [ ! -e "$filename" ]; then
echo "File '$filename' does not exist."
exit 1
fi

# Loop through each line in the file and convert 'o' to uppercase
while IFS= read -r line; do
uppercase=$(echo "$line" | sed 's/o/\U&/g')
echo "$uppercase"
done < "$filename"
EXPLANATION

Firstly using the if statement the script checks if a filename is provided as an argument. Then the script provided that filename as an argument using$1in a variable namedfilename. After that, the script checks whether the file exists or not using the if statement. To read each line of the file, the script uses a while loop. Inside the loop, thesedcommand converts all the occurrences of the specified character to uppercase using global substitution-gand\U&.

Using the cat command, check the contents of a file.

Showing the content of a file

The cat command shows all the existing elements of the file.

Converting all the strings of a file to uppercase

From the image, you can see the sed command has converted all occurrences of the specific character “o” to uppercase.

4. Using the “awk” Command with “toupper()” Function

To convert an input string to uppercase, you can use the awk command. The bash script uses the external command awk for text processing, handling multi-byte characters, and especially for pattern matching and manipulation. The awk command usestoupper()function to convert the string to uppercase. Take a look at the following script:

#!/bin/bash

# Define a string
my_string="New converted string."

# Convert the string to uppercase using awk
uppercase_string=$(echo "$my_string" | awk '{print toupper($0)}')

# Print the result
echo "Original string: $my_string"
echo "Uppercase: $uppercase_string"
EXPLANATION

The script uses|(pipe)operator to take the output of theechocommand to theawk command. In theawk '{print toupper($0)}', the awk command converts the output of the echo command to uppercase using its functiontoupper. In awk, the($0)indicates the entire output from the pipe operator.

Converting the bash string to uppercase

From the image you can see, thetoupperfunction has converted all the characters of the input string to uppercase.

5. Using the “perl” Command with “uc” Function

In bash scripting, the perl command provides a simple way to convert to uppercase. The perl command reads each line of the input then uses the uc function to convert the input to uppercase and later it displays the modified output. To convert a string to uppercase using perl command, check the following script:

#!/bin/bash

# Define a string
my_string="This string will be converted to uppercase"

# Convert the string to uppercase using Perl
uppercase_string=$(perl -e "print uc('$my_string')")

# Print the result
echo "Original String: $my_string"
echo "Uppercase: $uppercase_string"
EXPLANATION

Firstly the-eoption tells the perl command to execute the code as a command line argument. Then theucwhich is a function of the perl command, converts all the characters to uppercase of the input stringmy_string. The script stores the modified string in a variable named uppercase_string.

Converting the string to uppercase using perl command

The output shows the script successfully converted all the characters to uppercase.

Convert Multibyte Characters to Uppercase

To convert multibyte characters you can use theperlcommand. Check the following script:

#!/bin/bash

#Converting the multibyte characters to lowercase
input_string="hello æøå"

uppercase_string=$(echo "$input_string" | perl -CS -pe '$_ = uc($_)')

echo "Original string: $input_string"
echo "Uppercase: $uppercase_string"
EXPLANATION

Firstly the script declares a multibyte string in a variable namedinput_string. In the$(echo "$input_string" | perl -CS -pe '$_ = uc($_)')syntax, the pipe operator takes the output of theechocommand to the perl command. In the perl command, the script uses-CS option to specify theUTF-8encoded input and output. The$_specifies the current line and the uc()function converts the characters to uppercase.

Converting multibyte string to uppercase

From the image, you can see that the perl command has converted the multibyte characters æøå to uppercase.

Note: While handling multibyte characters, the tr command does not show the expected result. The awk command can handle multibyte characters well, but there might be specific cases where it doesn’t produce the expected result. So it is recommended to use the perl command while handling multibyte characters.

6. Using the “declare” Command

While declaring a variable if you use the-uflag, the declare command will change all the letters in the input to uppercase. To convert the input string to uppercase, use the following script:

#!/bin/bash

# Define a string
my_string="hello world"

# Convert the string to uppercase using declare
declare -u uppercase_string="$my_string"

# Print the result
echo "Uppercase: $uppercase_string"
EXPLANATION

At first, the bash script declares a string into a variable named my_string. Moreover, the script uses the-uoption with the declare command which converts all the characters to uppercase. At last, theechocommand prints the output of theuppercase_stringvariable in the terminal.

Using the declare command, the input string has been converted to uppercase

From the image you can see, the declare command has converted the “hello world” string to “HELLO WORLD”.

7. Using ASCII Values

To convert the characters of a string to uppercase, you can use the ASCII value of the characters. Using the ASCII value with the arithmetic operation in the loop, you can convert all the characters of the input string. Check the following code:

#!/bin/bash

# Define a string
my_string="The string has been converted to uppercase."

# Function to convert a character to uppercase
to_uppercase() {
local char="$1"
case "$char" in
[a-z])
char_code=$(printf "%d" "'$char")  # Get the ASCII value of the character
char_code=$((char_code - 32))          # Convert ASCII value to uppercase
printf \\$(printf '%03o' "$char_code")  # Print the uppercase character
;;
*)
printf "%s" "$char"  # If not a lowercase letter, print as it is
;;
esac
}

# Convert the string to uppercase
uppercase_string=""

for (( i=0; i<${#my_string}; i++ )); do
uppercase_string+=$(to_uppercase "${my_string:$i:1}")
done

# Print the result
echo "Original String: $my_string"
echo "Uppercase: $uppercase_string"
EXPLANATION

At first, the script declares a function that takes single characters as input and returns the uppercase characters. In the function, the script uses a case statement that checks whether the input character is lowercase or not. If the character is lowercase then it calculates the ASCII value and returns the corresponding character. The for loop iterates over each character. For each character, the loop calls the function and appends the output to the variableuppercase_string.

Using ASCII value the string has been converted to uppercase

The image shows the loop and case statement function has converted all the characters of the input string to uppercase.

Conclusion

The article has highlighted the importance of converting the case of a string and shows some practical methods to convert characters to uppercase. Using the parameter expansion you can easily change the case of a character. For versatile results, you can use external commands such as tr, awk, sed, and perl. Hope this guide will give you a clear concept of converting a bash string to uppercase.

People Also Ask

How do you change a string from lowercase to uppercase?

To change a string from lowercase to uppercase you can thetrcommand. The tr command transforms the characters of the first set with the second characters of the second set. Check the following script:

#!/bin/bash

# Define your string
input_string="hello world"

# Use tr to convert to uppercase
uppercase_string=$(echo "$input_string" | tr '[:lower:]' '[:upper:]')

# Print the result
echo "$uppercase_string"

#Output: HELLO WORLD

How do you change a string from uppercase to lowercase?

To change a string from uppercase to lowercase, you can use pure bash scripting parameter expansion with the,,operator. Then the operator in the parameter expansion will convert all the characters to lowercase. Check out the following script:

#!/bin/bash

original_string="HELLO WORLD"
lowercase_string="${original_string,,}"

echo "Original String: $original_string"
echo "Lowercase String: $lowercase_string"

#Output: Original String: HELLO WORLD
#Lowercase String: hello world

Which function converts a string to lowercase?

There is no direct function to convert a string to uppercase. To convert a string to uppercase you can use {string^^} and tr command that will directly change the case of the input string. You can usetoupperanducfunctions but for this, you need to use external commands likeawkand perl.

How do I convert a list of strings in a file to uppercase?

To convert a list of strings in a file to uppercase, you can use a while loop. The while loop reads each element with each iteration and converts each character of the file to uppercase using the tr command. Take a look at the following code:

#!/bin/bash

# Check if filename is provided
if [ -z "$1" ]; then
echo "Usage: $0 <filename>"
exit 1
fi

filename="$1"

# Check if file exists
if [ ! -e "$filename" ]; then
echo "File '$filename' does not exist."
exit 1
fi

# Loop through each line in the file and convert to uppercase
while IFS= read -r line; do
uppercase_line=$(echo "$line" | tr '[:lower:]' '[:upper:]')
echo "$uppercase_line"
done < "$filename"

#Output: ORANGE,PINK,BLUE.
#BLACK
#MAGENTA
#GREEN,YELLOW.
#RED,SKY-BLUE
#PURPLE,INDIGO

How do I convert the elements of an array to uppercase?

To convert the elements of an array to uppercase, firstly you need to declare the array in a variable. Then use a loop that can iterate each element of the array. Inside the loop, utilize a tr command that converts each character from lowercase to uppercase after each iteration. At last print the modified output using theechocommand. Check the following script:

#!/bin/bash

# Define your list of strings
strings=("hello" "world" "this" "is" "a" "test")

# Loop through each string and convert to uppercase
for ((i=0; i<${#strings[@]}; i++)); do
strings[$i]=$(echo "${strings[$i]}" | tr '[:lower:]' '[:upper:]')
done

# Print the resulting list
echo "${strings[@]}"

#Output: HELLO WORLD THIS IS A TEST

Related Articles


<< Go Back to String Manipulation in Bash | Bash String | Bash Scripting Tutorial

Rate this post
LINUX
FUNDAMENTALS
A Complete Guide for Beginners Enroll Course Now
Afia Zahin Oishi

Assalamualaikum, I am Afia Zahin, completed my graduation in Biomedical Engineering from Bangladesh University of Engineering and Technology, currently working as a Linux Content Developer Executive at SOFTEKO. A high achieving professional with a strong work ethic and able to work in a team in order to consistently achieve my goal and build my skillset. Able to handle difficult problems with patience and swift decision-making. Read Full Bio

4 thoughts on “How to Convert Bash String to Uppercase? [7 Methods]”

  1. The parameter expansion one at 1. doesn’t work:

    my_variable=”the first input string”
    uppercase_variable=”${my_variable^}”
    echo “Uppercase: $uppercase_variable”
    Uppercase: The first input string

    This was run on Bash 5.2.26(1)-release

    Reply
    • Here I have intended to convert the first letter to uppercase using parameter expansion. For that reason, I have used single caret (^). If you look at the output of your code, then you can see that it also worked for you and it converted the first character of the input “t” to “T”.

      Reply
  2. Disregard, That one works because it’s just the first letter.
    That’s still a weird example to show, I’d get rid of the “upper case the first letter” and just go with the double carat one that does the whole string.

    Reply
    • In the first example of parameter expansion, I used the single caret (^) to change just the first letter to uppercase. If you read the explanation before the code, it’ll make sense. If you only want to make all the letters in a string uppercase, take a look at the second example in parameter expansion, as well as other methods mentioned in the article.

      Reply

Leave a Comment