How to make nested for loops with dynamically named `i` in bashNested loops, if conditions, and background jobs in bashHow to make Bash loopsExiting a shell script with nested loopsTrying to get the specific information from the arrayLoops: for vs while… beyond the basics. Subtle differences/pros/cons for my code?Populate array with a sed/echo combinationBash Nested loopsBASH attempting to leave nested statements/loops/functionsMySQL Bash for loopsHow to set empty array elements set to zero?
The use of multiple foreign keys on same column in SQL Server
What would happen to a modern skyscraper if it rains micro blackholes?
Non-Jewish family in an Orthodox Jewish Wedding
Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?
Patience, young "Padovan"
N.B. ligature in Latex
Example of a relative pronoun
Why can't I see bouncing of a switch on an oscilloscope?
Circuitry of TV splitters
Why don't electron-positron collisions release infinite energy?
Chess with symmetric move-square
least quadratic residue under GRH: an EXPLICIT bound
How to report a triplet of septets in NMR tabulation?
whey we use polarized capacitor?
Is there really no realistic way for a skeleton monster to move around without magic?
How can bays and straits be determined in a procedurally generated map?
Why are 150k or 200k jobs considered good when there are 300k+ births a month?
How do I create uniquely male characters?
What typically incentivizes a professor to change jobs to a lower ranking university?
How did the USSR manage to innovate in an environment characterized by government censorship and high bureaucracy?
Why is this code 6.5x slower with optimizations enabled?
XeLaTeX and pdfLaTeX ignore hyphenation
LED on same Pin as Toggle Switch, not illuminating
Can a German sentence have two subjects?
How to make nested for loops with dynamically named `i` in bash
Nested loops, if conditions, and background jobs in bashHow to make Bash loopsExiting a shell script with nested loopsTrying to get the specific information from the arrayLoops: for vs while… beyond the basics. Subtle differences/pros/cons for my code?Populate array with a sed/echo combinationBash Nested loopsBASH attempting to leave nested statements/loops/functionsMySQL Bash for loopsHow to set empty array elements set to zero?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
So the following works to wrap the for loop and print out something for each item:
iterate()
local array=$1
shift
for i in $array; do
$*
done
iteratecallback()
echo item: $i
data=$(ls)
iterate "$data" iteratecallback
But what I would like to do is take the echo item: $i
and make i into echo item: $position
for top level, then index
for next level nesting, then i
for third level nesting, for example. Basically, be able to arbitrarily name these index variables while passing them into the wrapping function.
So for example, something like this:
iterate()
local customname=$1
local array=$2
shift
for $customname in $array; do
$*
done
iteratecallback()
echo item: $position
data2=$(ls)
iterate index "$data2" iteratecallback2
iteratecallback2()
echo item: $index in $position
data=$(ls)
iterate position "$data" iteratecallback
Wondering how to do such a thing in Bash.
bash
add a comment |
So the following works to wrap the for loop and print out something for each item:
iterate()
local array=$1
shift
for i in $array; do
$*
done
iteratecallback()
echo item: $i
data=$(ls)
iterate "$data" iteratecallback
But what I would like to do is take the echo item: $i
and make i into echo item: $position
for top level, then index
for next level nesting, then i
for third level nesting, for example. Basically, be able to arbitrarily name these index variables while passing them into the wrapping function.
So for example, something like this:
iterate()
local customname=$1
local array=$2
shift
for $customname in $array; do
$*
done
iteratecallback()
echo item: $position
data2=$(ls)
iterate index "$data2" iteratecallback2
iteratecallback2()
echo item: $index in $position
data=$(ls)
iterate position "$data" iteratecallback
Wondering how to do such a thing in Bash.
bash
2
Note that you're not passing an array, you are passing a string that contains newlines. Thefor
loop iterates over the words in that string, so if you have a filename that contains a space, you're not doing what you think you are.
– glenn jackman
Mar 27 at 16:23
1
You'll want to investigate "nameref" in the bash manual to truly reference a variable in the calling scope.
– glenn jackman
Mar 27 at 16:24
add a comment |
So the following works to wrap the for loop and print out something for each item:
iterate()
local array=$1
shift
for i in $array; do
$*
done
iteratecallback()
echo item: $i
data=$(ls)
iterate "$data" iteratecallback
But what I would like to do is take the echo item: $i
and make i into echo item: $position
for top level, then index
for next level nesting, then i
for third level nesting, for example. Basically, be able to arbitrarily name these index variables while passing them into the wrapping function.
So for example, something like this:
iterate()
local customname=$1
local array=$2
shift
for $customname in $array; do
$*
done
iteratecallback()
echo item: $position
data2=$(ls)
iterate index "$data2" iteratecallback2
iteratecallback2()
echo item: $index in $position
data=$(ls)
iterate position "$data" iteratecallback
Wondering how to do such a thing in Bash.
bash
So the following works to wrap the for loop and print out something for each item:
iterate()
local array=$1
shift
for i in $array; do
$*
done
iteratecallback()
echo item: $i
data=$(ls)
iterate "$data" iteratecallback
But what I would like to do is take the echo item: $i
and make i into echo item: $position
for top level, then index
for next level nesting, then i
for third level nesting, for example. Basically, be able to arbitrarily name these index variables while passing them into the wrapping function.
So for example, something like this:
iterate()
local customname=$1
local array=$2
shift
for $customname in $array; do
$*
done
iteratecallback()
echo item: $position
data2=$(ls)
iterate index "$data2" iteratecallback2
iteratecallback2()
echo item: $index in $position
data=$(ls)
iterate position "$data" iteratecallback
Wondering how to do such a thing in Bash.
bash
bash
asked Mar 27 at 16:02
Lance PollardLance Pollard
1717
1717
2
Note that you're not passing an array, you are passing a string that contains newlines. Thefor
loop iterates over the words in that string, so if you have a filename that contains a space, you're not doing what you think you are.
– glenn jackman
Mar 27 at 16:23
1
You'll want to investigate "nameref" in the bash manual to truly reference a variable in the calling scope.
– glenn jackman
Mar 27 at 16:24
add a comment |
2
Note that you're not passing an array, you are passing a string that contains newlines. Thefor
loop iterates over the words in that string, so if you have a filename that contains a space, you're not doing what you think you are.
– glenn jackman
Mar 27 at 16:23
1
You'll want to investigate "nameref" in the bash manual to truly reference a variable in the calling scope.
– glenn jackman
Mar 27 at 16:24
2
2
Note that you're not passing an array, you are passing a string that contains newlines. The
for
loop iterates over the words in that string, so if you have a filename that contains a space, you're not doing what you think you are.– glenn jackman
Mar 27 at 16:23
Note that you're not passing an array, you are passing a string that contains newlines. The
for
loop iterates over the words in that string, so if you have a filename that contains a space, you're not doing what you think you are.– glenn jackman
Mar 27 at 16:23
1
1
You'll want to investigate "nameref" in the bash manual to truly reference a variable in the calling scope.
– glenn jackman
Mar 27 at 16:24
You'll want to investigate "nameref" in the bash manual to truly reference a variable in the calling scope.
– glenn jackman
Mar 27 at 16:24
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2funix.stackexchange.com%2fquestions%2f509028%2fhow-to-make-nested-for-loops-with-dynamically-named-i-in-bash%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- 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%2funix.stackexchange.com%2fquestions%2f509028%2fhow-to-make-nested-for-loops-with-dynamically-named-i-in-bash%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
-bash
2
Note that you're not passing an array, you are passing a string that contains newlines. The
for
loop iterates over the words in that string, so if you have a filename that contains a space, you're not doing what you think you are.– glenn jackman
Mar 27 at 16:23
1
You'll want to investigate "nameref" in the bash manual to truly reference a variable in the calling scope.
– glenn jackman
Mar 27 at 16:24