Escape characters in a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Escape characters in a variable
# 1  
Old 03-30-2019
Escape characters in a variable

Debian 9 64x - LXDE

How can i disable escape sequences in a variable?

Code:
#!/bin/bash
#mainscript
  . "./links.bash"
  echo "$red_start This text should be red $color_end"

Code:
#!/bin/bash
#links.bash
  #colors
  red_start="\e[91m"
  color_end="\e[0m"

Output that i get:
\e[91m This text should be red \e[0m


Output expected:
This text should be red <- RED

Last edited by int3g3r; 03-30-2019 at 06:36 PM..
# 2  
Old 03-30-2019
Please make it a habit to post your system's info in every single new thread, as you did thankworthily in your very first post in here: "Debian 9 64x - LXDE".


As for your problem: the bash builtin echo needs the -e option. man bash:
Quote:
If the -e option is given, interpretation of the following backslash-escaped characters is enabled.
Same holds true for the external /bin/echo comand on linux systems. It does not necessarily on other systems.



Code:
echo "$red_start This text should be red $color_end"
\e[91m This text should be red \e[0m
echo -e "$red_start This text should be red $color_end"
 This text should be red 

This User Gave Thanks to RudiC For This Post:
# 3  
Old 03-30-2019
Thank you very much. This solved the problem!Smilie
# 4  
Old 03-30-2019
Alternative, more standard way:
Code:
printf "${red_start}%s${color_end}\n" "This text should be red"

or
Code:
redtext="${red_start}%s${color_end}"
printf "${redtext}\n" "This text should be red"

# 5  
Old 03-31-2019
Also another method for echo without the -e option:
(AND, using the POSIX only dash as the shell too.)

Code:
Last login: Sun Mar 31 10:12:31 on ttys000
AMIGA:amiga~> dash
AMIGA:\u\w> ESC=$( printf "\033" )
AMIGA:\u\w> /bin/echo "$ESC[32;45mThis is coloured text.$ESC[0m"
This is coloured text.
AMIGA:\u\w> exit
AMIGA:amiga~> _

See snapshot...
Escape characters in a variable-colourspng
# 6  
Old 03-31-2019
Quote:
Originally Posted by wisecracker
Code:
AMIGA:\u\w> ESC=$( printf "\033" )

This works but one can enter the ESC character (and most other characters) directly, at least in vi *) so you won't need a subshell: in insert mode press <CTRL>-<V> to enter the next character verbatim. If you press i.e. <CTRL>-<V> and then <ESC> the editor window will show usually this:

Code:
^[
~
~
~

This is vis way of "printing" an unprintable character. Moving over with the cursor will confirm that it is NOT a caret character followed by a opening square bracket but a single character - the ESC. You can use it exactly as this. I usually put a comment on such lines to make sure i remember that:

Code:
typeset chMyESC="^["           # WARNING: literal ESC char!

Likewise you can i.e. enter literal <ENTER> characters the same way which will look like ^M and may more.

I hope this helps.

bakunin
__________
*) i have heard rumors about other editors being out there too. They haven't been confirmed yet.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to escape all special characters?

I have an application which I am integrating with that accepts the password via a CLI. I am running in to issues with passwords that contain special characters. I tried to escape them all, but I ran in to an issue where I cannot escape the characters ' ] My attempt is as follows: $... (2 Replies)
Discussion started by: AMG1978
2 Replies

2. Shell Programming and Scripting

Escape characters

i am executing script from A server which will execute the script in B server , as below. ssh A 'ssh B echo 'select * from testing where name ='test'' i am getting the below output. select * from testing where name=test but i need the output where clause with quotes , tried with... (3 Replies)
Discussion started by: expert
3 Replies

3. Shell Programming and Scripting

Escape special characters in SED

Need help in escaping special characters in sed command. Here is the the string which i am trying to find a replace with From :- REQUEST_TYPE=PIXEL&amp;MSG_ID={//MESSAGE_ID} To :- REQUEST_TYPE=PIXEL&amp;MSG_ID= X_EDELIVERY_MESSAGE_ID &amp; BATCH_ID= X_EDELIVERY_BATCH_ID Here is the sed command i am... (2 Replies)
Discussion started by: aakishore
2 Replies

4. Shell Programming and Scripting

Replace special characters with Escape characters?

i need to replace the any special characters with escape characters like below. test!=123-> test\!\=123 !@#$%^&*()-= to be replaced by \!\@\#\$\%\^\&\*\(\)\-\= (8 Replies)
Discussion started by: laknar
8 Replies

5. Shell Programming and Scripting

Removing Escape Sequence Characters

Hi All, I have added the script command to user profile so that to record the on-screen data.But when i i checked the O/P i could see lot of escape sequence is there way to remove it. (2 Replies)
Discussion started by: cutechaps
2 Replies

6. UNIX for Dummies Questions & Answers

Escape Characters on various shells

Hi, I want to know if escape charaters work on all the popular UNIX shells. More specifically I want to know if echo "\c" will work on most of the UNIX shells and are there any specific shells on which \c won't work. Please help. Thanks, Vineet (2 Replies)
Discussion started by: vineetd
2 Replies

7. Shell Programming and Scripting

Searching for escape characters

Hi all I have been trying to write a script to look for a set of specific escape characters in a file. On viewing the file via vi it shows this : ^ I understand this means no end of line. I have tried a vary of grep parameters such as grep ^\^. filename grep --binary-file=binary without... (8 Replies)
Discussion started by: timcs
8 Replies

8. Shell Programming and Scripting

escape characters..

hey i want to know the unix commands to replace all the character escape sequences with their "C" values in a string... thanks in advance..! Regards, Sharanya (9 Replies)
Discussion started by: sharsin2001
9 Replies

9. Shell Programming and Scripting

number of escape characters?

Hi, I am trying to execute the following command from a batch script, but no matter how many escape characters I put in it doesn't execute properly. It works fine from the command line with quotes around the -exec part. #!/bin/sh /usr/local/bin/sudo /usr/atria/bin/cleartool setview -exec... (0 Replies)
Discussion started by: Sebarry
0 Replies

10. UNIX for Advanced & Expert Users

lp FormFeed Escape characters

I'm trying to modify the /usr/lib/lp/model/netstandard file to generate a header for all the print jobs that are sent, but there is no formfeed defined so the the job prints right after the header with no page break. What is the sequence I need in order to generate a formfeed? Or, do you have... (4 Replies)
Discussion started by: jgordon
4 Replies
Login or Register to Ask a Question