Creating a pseudo-array in dash, (POSIX).


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Creating a pseudo-array in dash, (POSIX).
# 8  
Old 01-11-2019
@ Don...

Each element in the pseudo-array will be a ASCII number from 0 to 255 decimal the value of an 8 bit byte, (so therefore 1 to 3 characters long); a simple audio sample.
(However it could be a 2 byte word from 0 to 65535 decimal, depends how I feel; a more accurate sample if I decide.)
I used newlines as an element separator in one of my examples but any IFS value would probably be OK by me...

You mention ed and I have never, ever used it and I like the idea you put forwards so man page and www it is to see the possibiities.
Is there a limit to POSIX's number of variables, or is that limited to available real memory and element sizes?

@ Jim M...

I code for pure fun and I really love trying the _impossible_ and making languages do stuff they were not designed to do.

@ Scrutinzer...

Not in my local environment at the moment but will try your method out.
# 9  
Old 01-11-2019
Quote:
Originally Posted by wisecracker
@ Don...

Each element in the pseudo-array will be a ASCII number from 0 to 255 decimal the value of an 8 bit byte, (so therefore 1 to 3 characters long); a simple audio sample.
(However it could be a 2 byte word from 0 to 65535 decimal, depends how I feel; a more accurate sample if I decide.)
I used newlines as an element separator in one of my examples but any IFS value would probably be OK by me...

You mention ed and I have never, ever used it and I like the idea you put forwards so man page and www it is to see the possibiities.
Is there a limit to POSIX's number of variables, or is that limited to available real memory and element sizes?

... ... ...
If you're used to using vi you've been using ed for as long as you've been using vi; you just didn't know it. And, by the way, everything I say about ed in the rest of this note also applies to the ex utility. I usually use ed instead of ex because ed is usually smaller than ex, and, therefore, loads faster. There are a few small differences between ed and ex, but none of them apply to the examples used in the following discussion.

In vi when you hit escape (to exit text append mode) and issue a command that starts with a <colon>, everything you enter after the colon is an ed command.

For example the vi the :w filename command writes the current contents of the editing buffer to the file named filename. In ed the command w filename writes the current contents of the editing buffer to the file named filename.

In vi the command :100s/.*/123/ will change the contents of line 100 in the editing buffer to the string "123". In ed the command 100s/.*/123/ will change the contents of line 100 in the editing buffer to the string "123".

In vi the command :100,200g/^.$/s/^/0/ followed by the command :100,200g/^..$/s/^/0/ will add leading zero characters on any of lines 100 through 200 of your editing buffer that had only one or two characters to have three characters on those lines with leading zero fill. In ed the command 100,200g/^.$/s/^/0/ followed by the command 100,200g/^..$/s/^/0/ will add leading zero characters on any of lines 100 through 200 of your editing buffer that had only one or two characters to have three characters on those lines with leading zero fill.

According to POSIX, the number of variables you can have in the shell and the length of values assigned to those variables is limited by the amount of physical memory available to the shell and the address space available to the shell in its addressable data space. The length of lines in ed is further restricted because the behavior of ed is only defined if the file you are editing is a text file and the standard says that a file is not a text file if it contains a line containing more than LINE_MAX bytes (including the terminating <newline> character) and implementations are required to set the implementation's LINE_MAX configuration limit to a value no smaller than 2048.

Cheers,
Don
This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. OS X (Apple)

Generate a random number in a fully POSIX compliant shell, 'dash'...

Hi all... Apologies for any typos, etc... This took a while but it didn't beat me... Although there are many methods of generating random numbers in a POSIX shell this uses integer maths and a simple C source to create an executable to get epoch to microseconds accuracy if it is needed. I take... (8 Replies)
Discussion started by: wisecracker
8 Replies

2. Shell Programming and Scripting

Creating array from file

Dear community, how can I create an array from file taking only the 4th field? out.txt file is something like this: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20So the final array should be: 4 8 12 16 20With this command I created an array with all the fields, but I need only the 4th... (13 Replies)
Discussion started by: Lord Spectre
13 Replies

3. UNIX for Dummies Questions & Answers

Creating an array

I am having trouble creating an array, I've tried everything google gives me but it won't work, and it seems as though it should. Using Ubunto 12.04 and bash. #!/bin/bash ARRAY=one two three echo ${ARRAY}When I do this I receive the error : two: not found and : Bad substitution When I... (3 Replies)
Discussion started by: jrymer
3 Replies

4. Shell Programming and Scripting

Creating array containing file names

I am wondering how I can save the file names (stored in $file or $fnames) in array which I can access with an index. alias MATH 'set \!:1 = `echo "\!:3-$" | bc -l`' set narg = $#argv while ($iarg < $narg) MATH iarg = $iarg + 1 set arg = $argv set opt = ` echo $arg | awk... (1 Reply)
Discussion started by: kristinu
1 Replies

5. Shell Programming and Scripting

creating variable array name

#!/bin/ksh #export CLASSPATH=$CLASSPATH:~dialp/cso/classes:/opt/oracle/product/8.1.6/jdbc/lib/classes12.zip #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/product/8.1.6/lib DATE="`date '+%m%d%Y'`" PATH=.:$PATH export PATH town_name='123' town_name='123' town_name='345'... (1 Reply)
Discussion started by: priyanka3006
1 Replies

6. Programming

Creating an array to hold posix thread ids: Only dynamic array works

I am facing a strange error while creating posix threads: Given below are two snippets of code, the first one works whereas the second one gives a garbage value in the output. Snippet 1 This works: -------------- int *threadids; threadids = (int *) malloc (num_threads * sizeof(int)); ... (4 Replies)
Discussion started by: kmehta
4 Replies

7. Shell Programming and Scripting

creating a dynamic array

i want to create an array the array elements are populated depending upon the number of entries present in a data file The data file is created dynamically how to achieve the same thanks (1 Reply)
Discussion started by: trichyselva
1 Replies

8. Solaris

pseudo: [ID 129642 kern.info] pseudo-device: vol0

Hi I have a system that gave me some messages on bootup that I was not used to seeing: pseudo: pseudo-device: vol0 genunix: vol0 is /pseudo/vol@0 these came with these: Feb 13 17:42:17 system1 eri: SUNW,eri0 : 100 Mbps full duplex link up Feb 13 17:42:21 system1sendmail: My unqualified... (0 Replies)
Discussion started by: mndavies
0 Replies

9. Shell Programming and Scripting

creating array variable

Hi all, i am quite fimiliar with shell scripting but i wouldn't regard myself as a semi professional at it. I am trying to create an array variable to read in 4 lines from a file using head and tail command in a pipeline and store each line into each array. I have done the scripting in unix... (2 Replies)
Discussion started by: scriptingmani
2 Replies

10. Shell Programming and Scripting

creating a dynamic array in ksh

Hi, Is it possible to create a dynamic array in shell script. I am trying to get the list of logfiles that created that day and put it in a dynamic array. I am not sure about it. help me New to scripting Gundu (3 Replies)
Discussion started by: gundu
3 Replies
Login or Register to Ask a Question