BASH Function to Escape Parameters Argument


We can use the following BASH function escape to escape the parameter strings and put them one by one. For example:

1
2
3
4
5
6
7
#!/bin/bash
 
function escape () {
    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
}
 
escape $*
#!/bin/bash

function escape () {
    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
}

escape $*

Using the prinftf with sed to escape the strings:

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$ ./escape 1234 a 4 "5 a"
'1234' \
'a' \
'4' \
'5' \
'a' \
$ ./escape 1234 a 4 ''
'1234' \
'a' \
'4' \
$ ./escape 1234 a 4 ' '
'1234' \
'a' \
'4' \
$ ./escape 1234 a 4 'ss1234'
'1234' \
'a' \
'4' \
'ss1234' \
$ ./escape 1234 a 4 'ss1234' "'"
'1234' \
'a' \
'4' \
'ss1234' \
''\''' \
$ ./escape 1234 a 4 'ss1234' "''"
'1234' \
'a' \
'4' \
'ss1234' \
''\'''\''' \
$ ./escape 1234 a 4 'ss1234' "<>"
'1234' \
'a' \
'4' \
'ss1234' \
'<>' \
$ ./escape 1234 a 4 'ss1234' "<>"
'1234' \
'a' \
'4' \
'ss1234' \
'<>' \
$ ./escape 1234 a 4 "5 a"
'1234' \
'a' \
'4' \
'5' \
'a' \
$ ./escape 1234 a 4 ''
'1234' \
'a' \
'4' \
$ ./escape 1234 a 4 ' '
'1234' \
'a' \
'4' \
$ ./escape 1234 a 4 'ss1234'
'1234' \
'a' \
'4' \
'ss1234' \
$ ./escape 1234 a 4 'ss1234' "'"
'1234' \
'a' \
'4' \
'ss1234' \
''\''' \
$ ./escape 1234 a 4 'ss1234' "''"
'1234' \
'a' \
'4' \
'ss1234' \
''\'''\''' \
$ ./escape 1234 a 4 'ss1234' "<>"
'1234' \
'a' \
'4' \
'ss1234' \
'<>' \
$ ./escape 1234 a 4 'ss1234' "<>"
'1234' \
'a' \
'4' \
'ss1234' \
'<>' \

BASH Programming/Shell

–EOF (The Ultimate Computing & Technology Blog) —

GD Star Rating
loading...
236 words
Last Post: Teaching Kids Programming - Count Square Sum (Pythagorean) Triples
Next Post: Teaching Kids Programming - Brick Layout (Unlimited Knapsack) via Top Down Dynamic Programming Algorithm

The Permanent URL is: BASH Function to Escape Parameters Argument

Leave a Reply