Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
| Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
 |
GNU/Linux Basic Guide
This 255-page guide will provide you with the keys to understand the philosophy of free software, teach you how to use and handle it, and give you the tools required to move easily in the world of GNU/Linux. Many users and administrators will be taking their first steps with this GNU/Linux Basic guide and it will show you how to approach and solve the problems you encounter.
Click Here to receive this Complete Guide absolutely free. |
|
 |
12-11-2009, 06:37 PM
|
#1
|
|
Guru
Registered: Dec 2006
Location: underground
Distribution: Slackware64
Posts: 7,594
|
How to deal with bash[$style] arrays in a POSIX compliant script?
I've been considering trying to make a project I'm working on be POSIX compliant.
I've been trying to test it using the Dash shell and have seemed to come across the un-enjoyable fact that POSIX non-Bash shells do not support arrays.
array[1]='hello' # doesn't work
set -A array... # doesn't work.
echo ${array[1]} # doesn't work.
$(eval echo \${$svar[6]}) # bad substitution.
etc..
If my script has made extensive use of arrays (and variable/array substitution FWIW), is it even practical or worthwhile to try to work around this array business? Is it even feasible?
Any input on this would be nice, and also, if you can recommend or suggest another 100% POSIX compliant shell besides Ash or Dash (but not Korn) (just for my fiddling with) I'll be happy to hear of it.
Sasha
|
|
|
|
12-11-2009, 07:30 PM
|
#2
|
|
Senior Member
Registered: Aug 2006
Posts: 2,695
|
what kind of project are you working on? I suggest you skip programming in shells and use a programming language like Python (or Perl). you can be guaranteed that programming constructs like arrays, dictionaries etc works the same across different language versions. Personally, i dislike these POSIX compliant this and that stuff...
|
|
|
|
12-12-2009, 05:39 AM
|
#3
|
|
Guru
Registered: Oct 2005
Location: $RANDOM
Distribution: slackware64
Posts: 12,592
|
Indeed I tend to agree with ghostdog74, once you say you "make extensive use of arrays", you have to start wondering if bash is really what you should be using.
I'm pretty sure that the above will work in 'sh' or 'bash --posix', I've never really used the others, except ksh.
|
|
|
|
12-12-2009, 02:39 PM
|
#4
|
|
Senior Member
Registered: Jul 2005
Distribution: Slackware
Posts: 2,006
Rep: 
|
In POSIX sh I've used newline delimited lists.. but you have to be very careful not to allow any items with newlines in or use some escaping mechanism. Or pray to $DIETY.
|
|
|
|
12-12-2009, 02:45 PM
|
#5
|
|
Senior Member
Registered: Sep 2009
Location: Washington U.S.
Distribution: Damn Small Linux, KateOs, M$ Ickdows Vista, My own OS
Posts: 2,136
Rep: 
|
If its ok to mess up the enviroment you could:
Code:
n = 0
X_$n = $n
n = $n + 1
X_$n = $n
I think that will work.
|
|
|
|
12-14-2009, 02:48 PM
|
#6
|
|
Guru
Registered: Dec 2006
Location: underground
Distribution: Slackware64
Posts: 7,594
Original Poster
|
I believe I have come up with a viable solution. It works in Dash Shell, so I'm figuring it's fairly POSIXy, hopefully POSIXy enough to pass in a full POSIX shell (if Dash is less than 100% POSIX) and will verify later..
Since I made sort of a little tutorial on the subject, I'm going to post a new thread HERE: http://www.linuxquestions.org/questi...rings.-775622/
|
|
|
|
12-16-2009, 10:24 AM
|
#7
|
|
Guru
Registered: Dec 2006
Location: underground
Distribution: Slackware64
Posts: 7,594
Original Poster
|
|
|
|
|
| Thread Tools |
Search this Thread |
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -5. The time now is 11:38 PM.
|
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|