r_bash – Telegram
What is the difference between :class: and [:class:]?

I can't find anything on the net or manual.

https://redd.it/15kupef
@r_bash
Small notification panel helper

After seeing another notification helper post in this sub, I felt the need to try creating one for myself. Here is the result, it uses terminal sequences to shorten the scroll area and reserve a couple of lines at the top for notification lines.

This has to be run using source. If anyone has a better idea on how to do it without source-ing, please do let me know.

I tried avoiding file-IO which is why we source and export instead. Also I am not a fan of tput, since its syntax is more foreign to me compared to regular VT-sequences.

The notification log is done in one printf line to hopefully atomically write it's output.

https://redd.it/15kx82h
@r_bash
WSL PATH Variable Appending Duplicates After Custom Command Execution

### FALSE ALARM ###

The issue is actually because some of my own code was appending to the PATH variable essentially the same way as:

export PATH="$PATH:$PATH:/the/path/i/want"

I only found this out because I saw the post "set -x is your friend" and used it.

Sorry for wasting your guys' time with this. I'll leave the post up in case anyone wants to read it (for some reason).

(Also, I keep pressing CTRL + S when trying to save this post. I'm not sure if I'm the only one doing that or not...)

### FALSE ALARM ###

I'm having an issue with my PATH variable in WSL.

I will mention right now, I make a ton of custom functions to help me get around the WSL environment. One is called "ref" which "refreshes" my environment. This function is running exec $SHELL, that way I can source any noscripts needed without closing WSL and opening it again. It might not be secure, but It's what I use.

I'm noticing that every time I use this, paths are being appended to my PATH variable that were already there before the refresh. Because of this, bash takes forever to autocomplete a command since it has to parse 50+ paths every time.

I've already looked inside the global file in /etc/bash.bashrc, but it doesn't even reference my PATH variable, and neither does \~/.bashrc. Because I couldn't find where something could be added, I added an echo at the beginning of my \~/.bashrc file and opened a new WSL session. This is what I got as the output:

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/mnt/c/Program Files/Common Files/Oracle/Java/javapath
/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
/mnt/c/Program Files/Microsoft/jdk-11.0.16.101-hotspot/bin
/mnt/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler
/mnt/c/Windows/system32
/mnt/c/Windows
/mnt/c/Windows/System32/Wbem
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/
/mnt/c/Windows/System32/OpenSSH/
/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common
/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
/mnt/c/Program Files/dotnet/
/mnt/c/Program Files (x86)/Lua/5.1
/mnt/c/Program Files (x86)/Lua/5.1/clibs
/mnt/c/Program Files/PuTTY/
/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
/mnt/c/Program Files/Microsoft SQL Server/150/Tools/Binn/
/mnt/c/Users/%USER%/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/%USER%/AppData/Local/Programs/Microsoft VS Code/bin
/mnt/c/Users/%USER%/.dotnet/tools
/mnt/c/Users/%USER%/AppData/Local/GitHubDesktop/bin
/snap/bin
/home/%USER%/.dotnet/tools
/home/%USER%/bin
/usr/java/jdk-13.0.2/bin

This leads me to assume that bash is fetching the PATH variable from Windows and appending it to its PATH.

Does anyone know why bash is doing this and how I can fix it?

​

​

This is what my PATH looks like as of writing this:

/home/%USER%/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/mnt/c/Program Files/Common Files/Oracle/Java/javapath
/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
/mnt/c/Program Files/Microsoft/jdk-11.0.16.101-hotspot/bin
/mnt/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler
/mnt/c/Windows/system32
/mnt/c/Windows
/mnt/c/Windows/System32/Wbem
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/
/mnt/c/Windows/System32/OpenSSH/
/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common
/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
/mnt/c/Program Files/dotnet/
/mnt/c/Program Files (x86)/Lua/5.1
/mnt/c/Program Files (x86)/Lua/5.1/clibs
/mnt/c/Program Files/PuTTY/
/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
/mnt/c/Program Files/Microsoft SQL
Server/150/Tools/Binn/
/mnt/c/Users/%USER%/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/%USER%/AppData/Local/Programs/Microsoft VS Code/bin
/mnt/c/Users/%USER%/.dotnet/tools
/mnt/c/Users/%USER%/AppData/Local/GitHubDesktop/bin
/snap/bin
/home/%USER%/.dotnet/tools
/home/%USER%/bin
/usr/java/jdk-13.0.2/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/mnt/c/Program Files/Common Files/Oracle/Java/javapath
/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
/mnt/c/Program Files/Microsoft/jdk-11.0.16.101-hotspot/bin
/mnt/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler
/mnt/c/Windows/system32
/mnt/c/Windows
/mnt/c/Windows/System32/Wbem
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/
/mnt/c/Windows/System32/OpenSSH/
/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common
/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
/mnt/c/Program Files/dotnet/
/mnt/c/Program Files (x86)/Lua/5.1
/mnt/c/Program Files (x86)/Lua/5.1/clibs
/mnt/c/Program Files/PuTTY/
/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
/mnt/c/Program Files/Microsoft SQL Server/150/Tools/Binn/
/mnt/c/Users/%USER%/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/%USER%/AppData/Local/Programs/Microsoft VS Code/bin
/mnt/c/Users/%USER%/.dotnet/tools
/mnt/c/Users/%USER%/AppData/Local/GitHubDesktop/bin
/snap/bin
/home/%USER%/.dotnet/tools
/home/%USER%/bin
/usr/java/jdk-13.0.2/bin
/mnt/f/.BACKUPS/.LOADER/bin
/home/%USER%/.local/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/mnt/c/Program Files/Common Files/Oracle/Java/javapath
/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
/mnt/c/Program Files/Microsoft/jdk-11.0.16.101-hotspot/bin
/mnt/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler
/mnt/c/Windows/system32
/mnt/c/Windows
/mnt/c/Windows/System32/Wbem
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/
/mnt/c/Windows/System32/OpenSSH/
/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common
/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
/mnt/c/Program Files/dotnet/
/mnt/c/Program Files (x86)/Lua/5.1
/mnt/c/Program Files (x86)/Lua/5.1/clibs
/mnt/c/Program Files/PuTTY/
/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
/mnt/c/Program Files/Microsoft SQL Server/150/Tools/Binn/
/mnt/c/Users/%USER%/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/%USER%/AppData/Local/Programs/Microsoft VS Code/bin
/mnt/c/Users/%USER%/.dotnet/tools
/mnt/c/Users/%USER%/AppData/Local/GitHubDesktop/bin
/snap/bin
/home/%USER%/.dotnet/tools
/home/%USER%/bin
/usr/java/jdk-13.0.2/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/mnt/c/Program Files/Common Files/Oracle/Java/javapath
/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
/mnt/c/Program Files/Microsoft/jdk-11.0.16.101-hotspot/bin
/mnt/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler
/mnt/c/Windows/system32
/mnt/c/Windows
/mnt/c/Windows/System32/Wbem
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/
/mnt/c/Windows/System32/OpenSSH/
/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common
/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR
/mnt/c/Program Files/dotnet/
/mnt/c/Program Files (x86)/Lua/5.1
/mnt/c/Program Files (x86)/Lua/5.1/clibs
/mnt/c/Program Files/PuTTY/
/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
/mnt/c/Program Files/Microsoft SQL Server/150/Tools/Binn/
/mnt/c/Users/%USER%/AppData/Local/Microsoft/WindowsApps
/mnt/c/Users/%USER%/AppData/Local/Programs/Microsoft VS
Code/bin
/mnt/c/Users/%USER%/.dotnet/tools
/mnt/c/Users/%USER%/AppData/Local/GitHubDesktop/bin
/snap/bin
/home/%USER%/.dotnet/tools
/home/%USER%/bin
/usr/java/jdk-13.0.2/bin
/mnt/f/.BACKUPS/.LOADER/bin
/mnt/f/.BACKUPS/.LOADER/bin

​

https://redd.it/15kux9r
@r_bash
How do I select my entire command line using the keyboard? In Windows it is ctrl + A

I'm trying to highlight my command line prompt

$ cat "Random command"

In Windows, I could press ctrl + A and that would select my cat "Random command" but in Bash ctrl + A, just moves my cursor to the front of the line.

I tried shift + Home but it just scrolls the terminal history to the top of the page.

https://redd.it/15l23h5
@r_bash
What happens if you just type expand with no file input?

Sorry for the basic question but it was on https://linuxjourney.com/lesson/expand-unexpand-command.

I couldn't figure out the purpose of not having a file input. It repeats what I'm entering but even if the command was converting TABs to spaces, I wasn't sure what the point would be and I'm sure there is a use case.

It doesn't even expand my variables, $city="Phoenix" doesn't do anything but repeat the input.

https://redd.it/15l8c7f
@r_bash
How do I write a bash noscript to escape html inside a json string?

- I am trying to upload templates to Amazon SES to send html emails
- As per their documentation here they want you to upload a json file that contains html text inside a string

I wrote a cli command like this

aws ses create-template --cli-input-json file://./wiki/email-templates/ses/confirm-email.json


My main problem is with the json file itself
Given an input html file and a text file, I want to generate that json on the fly and send it aws cli
{
"Template": {
"TemplateName": "MyTemplate",
"SubjectPart": "Greetings, {{name}}!",
"HtmlPart": "WHAT TO WRITE IN BASH HERE??? to take HTML file and generate a string out of it that is valid as per JSON rules",
"TextPart": "text file to string HERE...."
}
}

Super appreciate if someone can give me directions on this. I don't even know if my approach is correct

https://redd.it/15lcr07
@r_bash
How to move #n from the end of files name to the beginning?

I used linux before, so I know that this could be done with bash command probably.
I have a folder on my phone that has a 40 mp4 files with different names but each on of them ends with #n (#1,#2...etc)
I want to put this #n at the beginning of each file name so I can add them to a playlist on vlc as vlc doesn't support sorting by date
I will do this using termux.
And thanks in advance.

https://redd.it/15lgr8f
@r_bash
Why $(( 015 )) calculate as octal?

echo $(( 015 )) yeilds 13. Why and how to change this behavior?

https://redd.it/15lm0ev
@r_bash
Would like help understanding this, especially the last underscore: xargs -L 1 bash -c 'echo "$1 git log --pretty=format:"%H %an" $1^..$1"'

Hi all

So I was googling and found the following ([SOURCE-NOT-NEEDED-TO-UNDERSTAND-THE\
QUESTION](https://stackoverflow.com/questions/12055198/find-out-a-git-branch-creator)):

git branch -a | xargs -L 1 bash -c 'echo "$1 git log --pretty=format:"%H %an" $1^..$1"'

It indeed works (assuming you have git, sorry I don't have a non-git example) and it can be simplified to e.g.

echo main | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"'


What I noticed is that if I omit the last underscore "_", it won't work. I however understand xargs which will run bash -c on the stuff that has been piped through (e.g. git branch -a or echo main)... After that things becomes more complicated with $0 and $1... I've tried to google for understanding this syntax, but I've come to the conclusion that I don't fully understand why this command works and would like to hear if any of you can explain it, especially why the last underscore is needed...

Thanks!

https://redd.it/15lvnet
@r_bash
if else statement syntax error

I am very new to bash so the problem may be simple but my code keeps returning an error every time I run it and I've tried changing a few things but it doesn't work.

​

https://preview.redd.it/048izhufa3hb1.png?width=797&format=png&auto=webp&s=93a2b837ef7d9c93b98f82570e90763543dd7f40

​

https://redd.it/15mfu83
@r_bash
Issues whith appending string to a variable

Edit: Solved. See below

I have a variable set by the following command:

column_names=$(head -n 1 "$filename") # | sed 's/\t/ /g')

This works correctly and gives me the output I want when I print with echo. The output is a long line that is wrapped over several lines on the screen. This becomes important later.

The issue arise when I want to append a small string to the variable " varchar(255)"

I have tried many different versions but all of them end with the same issue, where the added string is printed at the start of the last wrapping line on the display. If I resize the terminal window and run the command again, the string is again printed at the start of the last line, which is now in a different location due to the text being wrapped differently in the resized window.

I've tried running this both in bash and zsh using gnome terminal and terminator. Same result every time.


Does anyone have a clue as to what might be the cause of the issue?

EDIT: Solved by running dos2unix on the source file. The line endings were messing this up.

https://redd.it/15mgrcy
@r_bash
Copied large directory, want to verify, struggling with md5sum

I copied a large directory with multiple layers of folders and subfolders to a new drive and I'd like to verify that everything got copied correctly before I delete it off the old drive.

I'm trying to do this via md5sum (but open to suggestions this is just one that was mentioned a lot) but struggling. I'm not sure if it's the command that just does nothing or if it takes long because it's lots of files, but either the resulting txt file (that's meant to have the checksum) is empty or in a random order.

E.g. this command: find -type f -exec md5sum '{}' \; > md5sum.txt from here actually results in that file being created, but the checksums are then in a seemingly random order. And because of this I'm not sure if the comparison will work if it the checksums from the other drive are in a different order?

I've also tried this command find . -type f -exec md5sum {} + | LC_ALL=C sort | md5sum from here but that one just takes forever or does nothing. And because this one doesn't create a file but is meant to output a collective checksum in terminal, I don't get any feedback if anything's happening.

Any advice?

Thanks!

https://redd.it/15ml345
@r_bash
Real-time log streaming. Is it possible?

Can I stream the log content to a mounted partition or a remote directory?

And I have a particular environment and some applications created by the company's development team that are also very specific.

Therefore, occasionally, some problems occur due to very large logs generated in a few hours.

My idea is to stream these logs in real-time (so I can monitor them) and rotate logs daily.

Any idea how to do it with Shell Script?

https://redd.it/15mp2do
@r_bash
grep 5 numbers only?

how do i test for 5 digits only ie i tried

grep -rE "[0-9\]{5}"

​

https://redd.it/15mwp6c
@r_bash
Everything Hijacked

Some mf on here said I can’t comment on an article and wants me to behave first before I have the privilege of communicating my thoughts to people all over the world. This mf literally has no idea who I am but he can silence me.

https://redd.it/15mwvn7
@r_bash
How do I make remove all the extra spaces while using jq to read raw html into a JSON string

- My use case is to upload SES templates to AWS for sending emails
- It requires you to have a JSON templates uploaded to SES in a [https://docs.aws.amazon.com/ses/latest/dg/send-personalized-email-api.html!](certain format)

I wrote a bash noscript in jq that does the following thanks to the help from some of the redditors here

```
declare -A confirm_email=( [TemplateName]="confirm-email" [SubjectPart]="Please confirm your email" )
declare -A forgot_password=( [TemplateName]="forgot-password" [SubjectPart]="Reset Password" )
declare -a templates=(confirm_email forgot_password)

for ((i=0; i<"${#templates[*]}"; i++)); do
curr="${templates[$i]}"
TemplateName="${curr}[TemplateName]"
SubjectPart="${curr}[SubjectPart]"
jq -n \
--arg TemplateName "${!TemplateName}" \
--arg SubjectPart "${!SubjectPart}" \
--rawfile html "${manually_created_directory}/${!TemplateName}.html" \
--rawfile text "${manually_created_directory}/${!TemplateName}.txt" \
'
{
"Template": {
"TemplateName": $TemplateName,
"SubjectPart": $SubjectPart,
"HtmlPart": $html,
"TextPart": $text
}

}' > "${automatically_generated_directory}/${!TemplateName}.json"

aws ses update-template --cli-input-json "file://${automatically_generated_directory}/${!TemplateName}.json"
done

```
My generated json file that I can uploaded to AWS SES looks somewhat like this

```
{
"Template": {
"TemplateName": "confirm-email",
"SubjectPart": "Please confirm your ch email",
"HtmlPart": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <noscript>Please confirm your email on ch</noscript>\n </head>\n <body\n style=\"\n -webkit-text-size-adjust: none;\n box-sizing: border-box;\n color: #74787e;\n font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;\n height: 100%;\n line-height: 1.4;\n margin: 0;\n width: 100% !important;\n \"\n bgcolor=\"#f2f4f6\"\n >\n <style type=\"text/css\">\n body {\n width: 100% !important;\n height: 100%;\n margin: 0;\n line-height: 1.4;\n background-color: #f2f4f6;\n color: #74787e;\n -webkit-text-size-adjust: none;\n }\n @media only screen and (max-width: 600px) {\n .email-body_inner {\n width: 100% !important;\n }\n .email-footer {\n width: 100% !important;\n }\n }\n @media only screen and (max-width: 500px) {\n .button {\n width: 100% !important;\n }\n }\n </style>\n <span\n class=\"preheader\"\n style=\"\n box-sizing: border-box;\n display: none !important;\n font-family: Arial, sans-serif;\n font-size: 1px;\n line-height: 1px;\n max-height: 0;\n max-width: 0;\n mso-hide: all;\n opacity: 0;\n overflow: hidden;\n visibility: hidden;\n \"\n >Use this link to reset your password. The link is only valid for 24\n hours.</span\n >\n <table\n class=\"email-wrapper\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 0;\n width: 100%;\n \"\n bgcolor=\"#f2f4f6\"\n >\n <tr>\n <td\n align=\"center\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n
word-break: break-word;\n \"\n >\n <table\n class=\"email-content\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 0;\n width: 100%;\n \"\n >\n <tr>\n <td\n class=\"email-masthead\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n padding: 25px 0;\n word-break: break-word;\n \"\n align=\"center\"\n >\n <a\n href=\"https://example.com\"\n class=\"email-masthead_name\"\n style=\"\n box-sizing: border-box;\n color: #bbbfc3;\n font-family: Arial, sans-serif;\n font-size: 16px;\n font-weight: bold;\n text-decoration: none;\n \"\n >ch</a\n >\n </td>\n </tr>\n <tr>\n <td\n class=\"email-body\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n style=\"\n -premailer-cellpadding: 0;\n -premailer-cellspacing: 0;\n border-bottom-color: #edeff2;\n border-bottom-style: solid;\n border-bottom-width: 1px;\n border-top-color: #edeff2;\n border-top-style: solid;\n border-top-width: 1px;\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 0;\n width: 100%;\n word-break: break-word;\n \"\n bgcolor=\"#ffffff\"\n >\n <table\n class=\"email-body_inner\"\n align=\"center\"\n width=\"570\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n margin: 0 auto;\n padding: 0;\n width: 570px;\n \"\n bgcolor=\"#ffffff\"\n >\n <tr>\n <td\n class=\"content-cell\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n padding: 35px;\n word-break: break-word;\n \"\n >\n <h1\n style=\"\n box-sizing: border-box;\n color: #2f3133;\n font-family: Arial, sans-serif;\n font-size: 19px;\n font-weight: bold;\n margin-top: 0;\n \"\n align=\"left\"\n >\n Hi {{name}},\n </h1>\n <p\n style=\"\n box-sizing: border-box;\n color: #74787e;\n font-family: Arial, sans-serif;\n font-size: 16px;\n line-height: 1.5em;\n margin-top: 0;\n \"\n align=\"left\"\n >\n Use the button below to confirm your email on ch.\n <strong\n
style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n \"\n >This link is only valid for the next 24\n hours.</strong\n >\n </p>\n <table\n class=\"body-action\"\n align=\"center\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n margin: 30px auto;\n padding: 0;\n text-align: center;\n width: 100%;\n \"\n >\n <tr>\n <td\n align=\"center\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n word-break: break-word;\n \"\n >\n <table\n width=\"100%\"\n border=\"0\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n \"\n >\n <tr>\n <td\n align=\"center\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n word-break: break-word;\n \"\n >\n <table\n border=\"0\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n \"\n >\n <tr>\n <td\n style=\"\n box-sizing: border-box;\n font-family: Arial, sans-serif;\n word-break: break-word;\n \"\n >\n <a\n href=\"{{action_url}}\"\n class=\"button button--blue\"\n target=\"_blank\"\n style=\"\n -webkit-text-size-adjust: none;\n background: #007dcc;\n border-color: #007dcc;\n border-radius: 3px;\n border-style: solid;\n border-width: 10px 18px;\n box-shadow: 0 2px 3px\n rgba(0, 0, 0, 0.16);\n box-sizing: border-box;\n color: #ffffff;\n