#!/usr/bin/env ksh
#!/usr/bin/env bash
# @(#) s3 Demonstrate brace expansion, base conversion.
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C
FILE=${1-data1}
p=$( basename $0 ) t1="$Revision: 1.12 $" v=${t1//[!0-9.]/}
[[ $# -gt 0 ]] && [[ "$1" =~ -version ]] && { echo "$p (local) $v" ; exit 0 ; }
# Function to convert base-16 to base-10
hex() {
printf "%d\n" "0x$1"
}
pl " Example 1, brace expansion, constants:"
printf '%d,' {2..4} ; printf "\n"
pl " Example 2, variables (bash fails; ksh succeeds):"
lo=3
hi=5
printf '%d,' {$lo..$hi} ; printf "\n"
pl " Example 3, variables, but with eval:"
eval "printf '%d,' {$lo..$hi}" ; printf "\n"
pl " Example 4, hex values in variables, remove final comma:"
lo=a0
hi=b0
eval "printf '%x,' {$(hex $lo)..$(hex $hi)}" | sed '$s/,$/\n/'
pl " Example 5, hex values in variables, arithmetic to eliminate comma:"
lo=a0
hi=b0
eval "printf '%x,' {$(hex $lo)..$(($(hex $hi)-1))}" ; printf "%x\n" $(hex $hi)
pl " Example 6, read from file, create sequence:"
IFS=":" read lo hi < $FILE
pe " Data:"
printf " lo = %s, hi = %s\n" $lo $hi
eval "printf '%x,' {$(hex $lo)..$(($(hex $hi)-1))}" ; printf "%x\n" $(hex $hi)
exit 0
producing:
Code:
$ ./s3
Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution : Debian 8.4 (jessie)
bash GNU bash 4.3.30
-----
Example 1, brace expansion, constants:
2,3,4,
-----
Example 2, variables (bash fails; ksh succeeds):
3,4,5,
-----
Example 3, variables, but with eval:
3,4,5,
-----
Example 4, hex values in variables, remove final comma:
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,aa,ab,ac,ad,ae,af,b0
-----
Example 5, hex values in variables, arithmetic to eliminate comma:
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,aa,ab,ac,ad,ae,af,b0
-----
Example 6, read from file, create sequence:
Data:
lo = 4D40, hi = 4D42
4d40,4d41,4d42
typeset -i A=16#0
typeset -u A=$a
y=${A#16#}
This converted $a to hex and stored it in y.
Can someone walk me through how this was done?
thanks (2 Replies)
hi,
which Unix/C function can i use to retrieve all group names with a particular group id?
The following C code prints out the group id number of a particular group name:
------------------------------------------------------------------------
#include <stdio.h>
#include <grp.h>
int... (3 Replies)
Hi I want to incremental add hex decimal number to a particula field in file
eg: addr =123 dept1=0
addr = 345 dept2 =1
addr2 = 124 dept3 =2
.
.
.
.
.
.
addr3 =567 dept15 =f
Is there any command which add... (8 Replies)
Guys
Following input line is from /etc/group file.As we know last entry in a line of /etc/group is userlist (all the users belonging to that group).
I need to splilt this one line into 3 lines as shown below (3 because userlist has 3 names in it).
Input:
lp:!:11:root,lp,printq
... (13 Replies)
Guys, I am looking for a small script which generates HEX sequence. Input to the script is starting hex number - Group ID and number of members in a group and total groups.
e.g: we are generating 2 groups with 4 Members each starting with hex number 036A. I should get o/p in following format.
... (5 Replies)
$ awk 'BEGIN{ pat111=0x1000000002E3E02; snBegin=0x1000000002E3E01; if (pat111<=snBegin) printf "a\n"}'
a
Result is not correct.
Looks like the number is too big.
Any idea?
Thx!
Please use code tags <- click the link! (2 Replies)
Hello,
I woild like to convert hex on KSH not BASH:
I tried to use:
tmp=31
printf "\x"${tmp}""
it works on bash - Output is '1' but not on ksh.
please advice on the right syntax.
Thanks. (4 Replies)
Hi,
I'm looking to split the following hex string into rows of four elements.
I've tried the following but it doesn't seem to work. How can I tell sed to match based on a pair of number(s) and letter(s), and add a newline every 4 pairs?
In addition, I need to add another newline after every... (5 Replies)
Discussion started by: sand1234
5 Replies
LEARN ABOUT SUNOS
echo
echo(1) User Commands echo(1)NAME
echo - echo arguments
SYNOPSIS
/usr/bin/echo [string...]
DESCRIPTION
The echo utility writes its arguments, separated by BLANKs and terminated by a NEWLINE, to the standard output. If there are no arguments,
only the NEWLINE character will be written.
echo is useful for producing diagnostics in command files, for sending known data into a pipe, and for displaying the contents of environ-
ment variables.
The C shell, the Korn shell, and the Bourne shell all have echo built-in commands, which, by default, will be invoked if the user calls
echo without a full pathname. See shell_builtins(1). sh's echo, ksh's echo, and /usr/bin/echo understand the back-slashed escape charac-
ters, except that sh's echo does not understand a as the alert character. In addition, ksh's echo, does not have an -n option. sh's echo
and /usr/bin/echo only have an -n option if the SYSV3 environment variable is set (see ENVIRONMENT VARIABLES below). If it is, none of the
backslashed characters mentioned above are available. csh's echo and /usr/ucb/echo, on the other hand, have an -n option, but do not under-
stand the back-slashed escape characters.
OPERANDS
The following operand is supported:
string A string to be written to standard output. If any operand is "-n", it will be treated as a string, not an option. The following
character sequences will be recognized within any of the arguments:
a Alert character.
Backspace.
c Print line without new-line. All characters following the c in the argument are ignored.
f Form-feed.
New-line.
Carriage return.
Tab.
v Vertical tab.
\ Backslash.
n Where n is the 8-bit character whose ASCII code is the 1-, 2- or 3-digit octal number representing that character.
USAGE
Portable applications should not use -n (as the first argument) or escape sequences.
The printf(1) utility can be used portably to emulate any of the traditional behaviors of the echo utility as follows:
o The Solaris 2.6 operating environment or compatible version's /usr/bin/echo is equivalent to:
printf "%b
" "$*"
o The /usr/ucb/echo is equivalent to:
if [ "X$1" = "X-n" ]
then
shift
printf "%s" "$*"
else
printf "%s
" "$*"
fi
New applications are encouraged to use printf instead of echo.
EXAMPLES
Example 1: Finding how far below root your current directory is located
You can use echo to determine how many subdirectories below the root directory (/) is your current directory, as follows:
o Echo your current-working-directory's full pathname.
o Pipe the output through tr to translate the path's embedded slash-characters into space-characters.
o Pipe that output through wc -w for a count of the names in your path.
example% /usr/bin/echo $PWD | tr '/' ' ' | wc -w
See tr(1) and wc(1) for their functionality.
Below are the different flavors for echoing a string without a NEWLINE:
Example 2: /usr/bin/echo
example% /usr/bin/echo "$USER's current directory is $PWDc"
Example 3: sh/ksh shells
example$ echo "$USER's current directory is $PWDc"
Example 4: csh shell
example% echo -n "$USER's current directory is $PWD"
Example 5: /usr/ucb/echo
example% /usr/ucb/echo -n "$USER's current directory is $PWD"
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment variables that affect the execution of echo: LANG, LC_ALL, LC_CTYPE, LC_MES-
SAGES, and NLSPATH.
SYSV3 This environment variable is used to provide compatibility with INTERACTIVE UNIX System and SCO UNIX installation scripts. It is
intended for compatibility only and should not be used in new scripts.
EXIT STATUS
The following error values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
|CSI |enabled |
+-----------------------------+-----------------------------+
|Interface Stability |Standard |
+-----------------------------+-----------------------------+
SEE ALSO echo(1B), printf(1), shell_builtins(1), tr(1), wc(1), ascii(5), attributes(5), environ(5), standards(5)NOTES
When representing an 8-bit character by using the escape convention n, the n must always be preceded by the digit zero(0).
For example, typing: echo 'WARNING: 7' will print the phrase WARNING: and sound the "bell" on your terminal. The use of single (or double)
quotes (or two backslashes) is required to protect the "" that precedes the "07".
Following the , up to three digits are used in constructing the octal output character. If, following the n, you want to echo addi-
tional digits that are not part of the octal representation, you must use the full 3-digit n. For example, if you want to echo "ESC 7" you
must use the three digits "033" rather than just the two digits "33" after the .
2 digits Incorrect: echo"0337 | od -xc
produces: df0a (hex)
337 (ascii)
3 digits Correct: echo "00337" | od -xc
produces: lb37 0a00 (hex)
033 7 (ascii)
For the octal equivalents of each character, see ascii(5).
SunOS 5.10 20 Jan 2000 echo(1)