Loop over a string in zsh and Bash
I would like to convert this Bash loop:
x="one two three"
for i in ${x}
do
echo ${i}
done
in such a way to work with both Bash and zsh
This solution works:
x=( one two three )
for i in ${x[@]}
do
echo ${i}
done
Anyway I am modifying x
from a string to an array.
Is there a way to loop over $x
in zsh when it is a string and in a way compatible with Bash?
I know about zsh setopt shwordsplit
to emulate Bash, but I can't set it ad hoc for the loop, because it would not work in Bash.
`
bash zsh quoting variable
add a comment |
I would like to convert this Bash loop:
x="one two three"
for i in ${x}
do
echo ${i}
done
in such a way to work with both Bash and zsh
This solution works:
x=( one two three )
for i in ${x[@]}
do
echo ${i}
done
Anyway I am modifying x
from a string to an array.
Is there a way to loop over $x
in zsh when it is a string and in a way compatible with Bash?
I know about zsh setopt shwordsplit
to emulate Bash, but I can't set it ad hoc for the loop, because it would not work in Bash.
`
bash zsh quoting variable
add a comment |
I would like to convert this Bash loop:
x="one two three"
for i in ${x}
do
echo ${i}
done
in such a way to work with both Bash and zsh
This solution works:
x=( one two three )
for i in ${x[@]}
do
echo ${i}
done
Anyway I am modifying x
from a string to an array.
Is there a way to loop over $x
in zsh when it is a string and in a way compatible with Bash?
I know about zsh setopt shwordsplit
to emulate Bash, but I can't set it ad hoc for the loop, because it would not work in Bash.
`
bash zsh quoting variable
I would like to convert this Bash loop:
x="one two three"
for i in ${x}
do
echo ${i}
done
in such a way to work with both Bash and zsh
This solution works:
x=( one two three )
for i in ${x[@]}
do
echo ${i}
done
Anyway I am modifying x
from a string to an array.
Is there a way to loop over $x
in zsh when it is a string and in a way compatible with Bash?
I know about zsh setopt shwordsplit
to emulate Bash, but I can't set it ad hoc for the loop, because it would not work in Bash.
`
bash zsh quoting variable
bash zsh quoting variable
edited Jul 10 '16 at 22:37
Gilles
528k12810571583
528k12810571583
asked Jul 10 '16 at 22:22
antonio
4322722
4322722
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
if type emulate >/dev/null 2>/dev/null; then emulate ksh; fi
In zsh, this activates options that make it more compatible with ksh and bash, including sh_word_split
. In other shells, emulate
doesn't exist so this does nothing.
add a comment |
If you are not afraid to use eval (= evil):
x="one two three"
eval "x=($x)"
for i in ${x[@]}; do
echo $i
done
add a comment |
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%2f295033%2floop-over-a-string-in-zsh-and-bash%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 type emulate >/dev/null 2>/dev/null; then emulate ksh; fi
In zsh, this activates options that make it more compatible with ksh and bash, including sh_word_split
. In other shells, emulate
doesn't exist so this does nothing.
add a comment |
if type emulate >/dev/null 2>/dev/null; then emulate ksh; fi
In zsh, this activates options that make it more compatible with ksh and bash, including sh_word_split
. In other shells, emulate
doesn't exist so this does nothing.
add a comment |
if type emulate >/dev/null 2>/dev/null; then emulate ksh; fi
In zsh, this activates options that make it more compatible with ksh and bash, including sh_word_split
. In other shells, emulate
doesn't exist so this does nothing.
if type emulate >/dev/null 2>/dev/null; then emulate ksh; fi
In zsh, this activates options that make it more compatible with ksh and bash, including sh_word_split
. In other shells, emulate
doesn't exist so this does nothing.
answered Jul 10 '16 at 22:38
Gilles
528k12810571583
528k12810571583
add a comment |
add a comment |
If you are not afraid to use eval (= evil):
x="one two three"
eval "x=($x)"
for i in ${x[@]}; do
echo $i
done
add a comment |
If you are not afraid to use eval (= evil):
x="one two three"
eval "x=($x)"
for i in ${x[@]}; do
echo $i
done
add a comment |
If you are not afraid to use eval (= evil):
x="one two three"
eval "x=($x)"
for i in ${x[@]}; do
echo $i
done
If you are not afraid to use eval (= evil):
x="one two three"
eval "x=($x)"
for i in ${x[@]}; do
echo $i
done
answered 1 hour ago
Hielke Walinga
18015
18015
add a comment |
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f295033%2floop-over-a-string-in-zsh-and-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