Save Char value from ASCII in a bash variable
I have this code to convert Dec ASCII value to char:
printf "\$(printf %o $ascii_value)"
Instead of print it, I would like to save it in a var. However, I can't get the Char value in that way.
root@private:/path# v=`printf "\$(printf %o 42)"`; echo $v
$(printf 0 42)
root@private:/path# printf "\$(printf %o 42)"
*
How can I save the Char value in a variable?
Thanks!!
bash shell char ascii
add a comment |
I have this code to convert Dec ASCII value to char:
printf "\$(printf %o $ascii_value)"
Instead of print it, I would like to save it in a var. However, I can't get the Char value in that way.
root@private:/path# v=`printf "\$(printf %o 42)"`; echo $v
$(printf 0 42)
root@private:/path# printf "\$(printf %o 42)"
*
How can I save the Char value in a variable?
Thanks!!
bash shell char ascii
add a comment |
I have this code to convert Dec ASCII value to char:
printf "\$(printf %o $ascii_value)"
Instead of print it, I would like to save it in a var. However, I can't get the Char value in that way.
root@private:/path# v=`printf "\$(printf %o 42)"`; echo $v
$(printf 0 42)
root@private:/path# printf "\$(printf %o 42)"
*
How can I save the Char value in a variable?
Thanks!!
bash shell char ascii
I have this code to convert Dec ASCII value to char:
printf "\$(printf %o $ascii_value)"
Instead of print it, I would like to save it in a var. However, I can't get the Char value in that way.
root@private:/path# v=`printf "\$(printf %o 42)"`; echo $v
$(printf 0 42)
root@private:/path# printf "\$(printf %o 42)"
*
How can I save the Char value in a variable?
Thanks!!
bash shell char ascii
bash shell char ascii
asked Nov 29 '18 at 14:42
Miguel.GMiguel.G
9810
9810
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
If the printf
available in your shell supports the -v
option (similar to sprintf()
in C) you can directly use that to store the content of the formatted string directly to the variable and not printing to standard output.
printf -v char_value "\$(printf %o $ascii_value)"
You can verify that with a simple example
for ascii in {65..90} {97..122}; do
printf -v char_value "\$(printf %o $ascii)"
printf '%cn' "$char_value"
done
1
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
add a comment |
Simply do:
ascii_value=65; char="$(printf "\$(printf "%o" "${ascii_value}")")"; echo $char
A
Lets make this a function for easy reuse:
#!/usr/bin/env bash
# Gets a character from its ASCII value
# Params:
# $1: the ASCII value of the character
# Return:
# >: the character with given ASCII value
# ?: false if the ASCII value is out of the 0..127 range
ASCIIToChar() {
[ "${1}" -lt 0 -o "${1}" -gt 127 ] && return 1
printf "\$(printf "%o" "${1}")"
}
# Lets demo the function above
declare -i ascii # variable ascii of type integer
declare character # variable character
# Print a header
echo -e "ASCIIttCharacter"
for ascii in {65..90} {97..122}; do
# Convert the ascii value and store the character
character="$(ASCIIToChar "${ascii}")"
# Print line with 2 columns ASCII and character
echo -e "${ascii}tt${character}"
done
Will output:
ASCII Character
65 A
66 B
67 C
68 D
69 E
70 F
[...]
119 w
120 x
121 y
122 z
Or to convert UTF-8 to character
# Gets a character from its UTF-8 value
# Params:
# $1: the UTF-8 value of the character
# Return:
# >: the character with given UTF-8 value
# ?: false if UTF-8 value is out of the 0..65535 range
UTF8toChar() {
[ "$((${1}))" -lt 0 -o "$((${1}))" -gt 65535 ] && return 1;
printf "\u$(printf "%04x" "${1}")"
}
# Lets demo the function above
declare -i utf8 # variable utf8 of type integer
declare character # variable character
# Print a header
echo -e "UTF-8ttCharacter"
for utf8 in {9472..9616} # U+2500..U+259F semi-graphic
do
# Convert the UTF-8 value and store the character
character="$(UTF8toChar "${utf8}")"
# Print line with 2 columns UTF-8 and character
printf "U+%04Xtt%sn" "${utf8}" "${character}"
done
Will output:
UTF-8 Character
U+2500 ─
U+2501 ━
U+2502 │
U+2503 ┃
U+2504 ┄
U+2505 ┅
[...]
U+2567 ╧
U+2568 ╨
U+2569 ╩
U+256A ╪
U+256B ╫
U+256C ╬
U+256D ╭
U+256E ╮
U+256F ╯
U+2570 ╰
[...]
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53541516%2fsave-char-value-from-ascii-in-a-bash-variable%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If the printf
available in your shell supports the -v
option (similar to sprintf()
in C) you can directly use that to store the content of the formatted string directly to the variable and not printing to standard output.
printf -v char_value "\$(printf %o $ascii_value)"
You can verify that with a simple example
for ascii in {65..90} {97..122}; do
printf -v char_value "\$(printf %o $ascii)"
printf '%cn' "$char_value"
done
1
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
add a comment |
If the printf
available in your shell supports the -v
option (similar to sprintf()
in C) you can directly use that to store the content of the formatted string directly to the variable and not printing to standard output.
printf -v char_value "\$(printf %o $ascii_value)"
You can verify that with a simple example
for ascii in {65..90} {97..122}; do
printf -v char_value "\$(printf %o $ascii)"
printf '%cn' "$char_value"
done
1
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
add a comment |
If the printf
available in your shell supports the -v
option (similar to sprintf()
in C) you can directly use that to store the content of the formatted string directly to the variable and not printing to standard output.
printf -v char_value "\$(printf %o $ascii_value)"
You can verify that with a simple example
for ascii in {65..90} {97..122}; do
printf -v char_value "\$(printf %o $ascii)"
printf '%cn' "$char_value"
done
If the printf
available in your shell supports the -v
option (similar to sprintf()
in C) you can directly use that to store the content of the formatted string directly to the variable and not printing to standard output.
printf -v char_value "\$(printf %o $ascii_value)"
You can verify that with a simple example
for ascii in {65..90} {97..122}; do
printf -v char_value "\$(printf %o $ascii)"
printf '%cn' "$char_value"
done
edited Nov 29 '18 at 17:31
answered Nov 29 '18 at 14:53
InianInian
41.1k64274
41.1k64274
1
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
add a comment |
1
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
1
1
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
Thanks for your solution, it works!:)
– Miguel.G
Dec 3 '18 at 14:48
add a comment |
Simply do:
ascii_value=65; char="$(printf "\$(printf "%o" "${ascii_value}")")"; echo $char
A
Lets make this a function for easy reuse:
#!/usr/bin/env bash
# Gets a character from its ASCII value
# Params:
# $1: the ASCII value of the character
# Return:
# >: the character with given ASCII value
# ?: false if the ASCII value is out of the 0..127 range
ASCIIToChar() {
[ "${1}" -lt 0 -o "${1}" -gt 127 ] && return 1
printf "\$(printf "%o" "${1}")"
}
# Lets demo the function above
declare -i ascii # variable ascii of type integer
declare character # variable character
# Print a header
echo -e "ASCIIttCharacter"
for ascii in {65..90} {97..122}; do
# Convert the ascii value and store the character
character="$(ASCIIToChar "${ascii}")"
# Print line with 2 columns ASCII and character
echo -e "${ascii}tt${character}"
done
Will output:
ASCII Character
65 A
66 B
67 C
68 D
69 E
70 F
[...]
119 w
120 x
121 y
122 z
Or to convert UTF-8 to character
# Gets a character from its UTF-8 value
# Params:
# $1: the UTF-8 value of the character
# Return:
# >: the character with given UTF-8 value
# ?: false if UTF-8 value is out of the 0..65535 range
UTF8toChar() {
[ "$((${1}))" -lt 0 -o "$((${1}))" -gt 65535 ] && return 1;
printf "\u$(printf "%04x" "${1}")"
}
# Lets demo the function above
declare -i utf8 # variable utf8 of type integer
declare character # variable character
# Print a header
echo -e "UTF-8ttCharacter"
for utf8 in {9472..9616} # U+2500..U+259F semi-graphic
do
# Convert the UTF-8 value and store the character
character="$(UTF8toChar "${utf8}")"
# Print line with 2 columns UTF-8 and character
printf "U+%04Xtt%sn" "${utf8}" "${character}"
done
Will output:
UTF-8 Character
U+2500 ─
U+2501 ━
U+2502 │
U+2503 ┃
U+2504 ┄
U+2505 ┅
[...]
U+2567 ╧
U+2568 ╨
U+2569 ╩
U+256A ╪
U+256B ╫
U+256C ╬
U+256D ╭
U+256E ╮
U+256F ╯
U+2570 ╰
[...]
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
add a comment |
Simply do:
ascii_value=65; char="$(printf "\$(printf "%o" "${ascii_value}")")"; echo $char
A
Lets make this a function for easy reuse:
#!/usr/bin/env bash
# Gets a character from its ASCII value
# Params:
# $1: the ASCII value of the character
# Return:
# >: the character with given ASCII value
# ?: false if the ASCII value is out of the 0..127 range
ASCIIToChar() {
[ "${1}" -lt 0 -o "${1}" -gt 127 ] && return 1
printf "\$(printf "%o" "${1}")"
}
# Lets demo the function above
declare -i ascii # variable ascii of type integer
declare character # variable character
# Print a header
echo -e "ASCIIttCharacter"
for ascii in {65..90} {97..122}; do
# Convert the ascii value and store the character
character="$(ASCIIToChar "${ascii}")"
# Print line with 2 columns ASCII and character
echo -e "${ascii}tt${character}"
done
Will output:
ASCII Character
65 A
66 B
67 C
68 D
69 E
70 F
[...]
119 w
120 x
121 y
122 z
Or to convert UTF-8 to character
# Gets a character from its UTF-8 value
# Params:
# $1: the UTF-8 value of the character
# Return:
# >: the character with given UTF-8 value
# ?: false if UTF-8 value is out of the 0..65535 range
UTF8toChar() {
[ "$((${1}))" -lt 0 -o "$((${1}))" -gt 65535 ] && return 1;
printf "\u$(printf "%04x" "${1}")"
}
# Lets demo the function above
declare -i utf8 # variable utf8 of type integer
declare character # variable character
# Print a header
echo -e "UTF-8ttCharacter"
for utf8 in {9472..9616} # U+2500..U+259F semi-graphic
do
# Convert the UTF-8 value and store the character
character="$(UTF8toChar "${utf8}")"
# Print line with 2 columns UTF-8 and character
printf "U+%04Xtt%sn" "${utf8}" "${character}"
done
Will output:
UTF-8 Character
U+2500 ─
U+2501 ━
U+2502 │
U+2503 ┃
U+2504 ┄
U+2505 ┅
[...]
U+2567 ╧
U+2568 ╨
U+2569 ╩
U+256A ╪
U+256B ╫
U+256C ╬
U+256D ╭
U+256E ╮
U+256F ╯
U+2570 ╰
[...]
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
add a comment |
Simply do:
ascii_value=65; char="$(printf "\$(printf "%o" "${ascii_value}")")"; echo $char
A
Lets make this a function for easy reuse:
#!/usr/bin/env bash
# Gets a character from its ASCII value
# Params:
# $1: the ASCII value of the character
# Return:
# >: the character with given ASCII value
# ?: false if the ASCII value is out of the 0..127 range
ASCIIToChar() {
[ "${1}" -lt 0 -o "${1}" -gt 127 ] && return 1
printf "\$(printf "%o" "${1}")"
}
# Lets demo the function above
declare -i ascii # variable ascii of type integer
declare character # variable character
# Print a header
echo -e "ASCIIttCharacter"
for ascii in {65..90} {97..122}; do
# Convert the ascii value and store the character
character="$(ASCIIToChar "${ascii}")"
# Print line with 2 columns ASCII and character
echo -e "${ascii}tt${character}"
done
Will output:
ASCII Character
65 A
66 B
67 C
68 D
69 E
70 F
[...]
119 w
120 x
121 y
122 z
Or to convert UTF-8 to character
# Gets a character from its UTF-8 value
# Params:
# $1: the UTF-8 value of the character
# Return:
# >: the character with given UTF-8 value
# ?: false if UTF-8 value is out of the 0..65535 range
UTF8toChar() {
[ "$((${1}))" -lt 0 -o "$((${1}))" -gt 65535 ] && return 1;
printf "\u$(printf "%04x" "${1}")"
}
# Lets demo the function above
declare -i utf8 # variable utf8 of type integer
declare character # variable character
# Print a header
echo -e "UTF-8ttCharacter"
for utf8 in {9472..9616} # U+2500..U+259F semi-graphic
do
# Convert the UTF-8 value and store the character
character="$(UTF8toChar "${utf8}")"
# Print line with 2 columns UTF-8 and character
printf "U+%04Xtt%sn" "${utf8}" "${character}"
done
Will output:
UTF-8 Character
U+2500 ─
U+2501 ━
U+2502 │
U+2503 ┃
U+2504 ┄
U+2505 ┅
[...]
U+2567 ╧
U+2568 ╨
U+2569 ╩
U+256A ╪
U+256B ╫
U+256C ╬
U+256D ╭
U+256E ╮
U+256F ╯
U+2570 ╰
[...]
Simply do:
ascii_value=65; char="$(printf "\$(printf "%o" "${ascii_value}")")"; echo $char
A
Lets make this a function for easy reuse:
#!/usr/bin/env bash
# Gets a character from its ASCII value
# Params:
# $1: the ASCII value of the character
# Return:
# >: the character with given ASCII value
# ?: false if the ASCII value is out of the 0..127 range
ASCIIToChar() {
[ "${1}" -lt 0 -o "${1}" -gt 127 ] && return 1
printf "\$(printf "%o" "${1}")"
}
# Lets demo the function above
declare -i ascii # variable ascii of type integer
declare character # variable character
# Print a header
echo -e "ASCIIttCharacter"
for ascii in {65..90} {97..122}; do
# Convert the ascii value and store the character
character="$(ASCIIToChar "${ascii}")"
# Print line with 2 columns ASCII and character
echo -e "${ascii}tt${character}"
done
Will output:
ASCII Character
65 A
66 B
67 C
68 D
69 E
70 F
[...]
119 w
120 x
121 y
122 z
Or to convert UTF-8 to character
# Gets a character from its UTF-8 value
# Params:
# $1: the UTF-8 value of the character
# Return:
# >: the character with given UTF-8 value
# ?: false if UTF-8 value is out of the 0..65535 range
UTF8toChar() {
[ "$((${1}))" -lt 0 -o "$((${1}))" -gt 65535 ] && return 1;
printf "\u$(printf "%04x" "${1}")"
}
# Lets demo the function above
declare -i utf8 # variable utf8 of type integer
declare character # variable character
# Print a header
echo -e "UTF-8ttCharacter"
for utf8 in {9472..9616} # U+2500..U+259F semi-graphic
do
# Convert the UTF-8 value and store the character
character="$(UTF8toChar "${utf8}")"
# Print line with 2 columns UTF-8 and character
printf "U+%04Xtt%sn" "${utf8}" "${character}"
done
Will output:
UTF-8 Character
U+2500 ─
U+2501 ━
U+2502 │
U+2503 ┃
U+2504 ┄
U+2505 ┅
[...]
U+2567 ╧
U+2568 ╨
U+2569 ╩
U+256A ╪
U+256B ╫
U+256C ╬
U+256D ╭
U+256E ╮
U+256F ╯
U+2570 ╰
[...]
edited Jan 2 at 12:59
answered Nov 30 '18 at 0:45
Léa GrisLéa Gris
413
413
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
add a comment |
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
Hi! Thanks for your solution:)
– Miguel.G
Dec 3 '18 at 14:49
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53541516%2fsave-char-value-from-ascii-in-a-bash-variable%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown