How does zsh expand variables before passing to programs?Expanding variables in zshGlobbing with brackets and...
Why do you need to heat the pan before heating the olive oil?
Name for a function whose effect is canceled by another function?
What does it cost to buy a tavern?
"Correct me if I'm wrong"
Counterfeit checks were created for my account. How does this type of fraud work?
How is the idea of "girlfriend material" naturally expressed in Russian?
How to take photos with a yellowish tone and point-and-shoot film camera look?
Large-n limit of the distribution of the normalized sum of Cauchy random variables
How did Frodo know where the Bree village was?
How to compute the inverse of an operation in Q#?
What is the "ls" directory in my home directory?
Is there any possible way to get these hearts as Adult Link?
In the US, can a former president run again?
What is that ceiling compartment of a Boeing 737?
Are there any individual aliens that have gained superpowers in the Marvel universe?
What mathematical theory is required for high frequency trading?
Are there examples of rowers who also fought?
How can I ping multiple IP addresses at the same time?
Time at 1 g acceleration to travel 100 000 light years
How can I prevent a user from copying files on another hard drive?
Can a character learn spells from someone else's spellbook and then sell it?
Justifying Affordable Bespoke Spaceships
How "fast" do astronomical events occur?
Unrecognized IC Package Style
How does zsh expand variables before passing to programs?
Expanding variables in zshGlobbing with brackets and variables in zshzsh - fully expand binary path on <tab>Expand variable in function definition in zshHow can I expand all variables at the command line in Zsh?Expand parameter in quotes in zshOn passing arguments to programs through array variableszsh, expand * to (a|b|c)Why does $((0.1)) expand to 0.10000000000000001 in zsh?Expand alias in ZSH history
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
A basic rule of zsh is that you don't need to quote your variables, for example:
% data="single argument"
% print -l $data
single argument
One exception I know of is that if an argument must not be skipped even if empty, it must be double quoted:
% emptyarg=
% functon count() { echo $# }
% count $emptyarg
0
% count "$emptyarg"
1
However, if an argument contains certain special characters, it must be quoted or the shell gives an error. Why is that? It seems fragile. The content of my data shouldn't substantially influence how functions/commands run.
zsh parameter
New contributor
add a comment |
A basic rule of zsh is that you don't need to quote your variables, for example:
% data="single argument"
% print -l $data
single argument
One exception I know of is that if an argument must not be skipped even if empty, it must be double quoted:
% emptyarg=
% functon count() { echo $# }
% count $emptyarg
0
% count "$emptyarg"
1
However, if an argument contains certain special characters, it must be quoted or the shell gives an error. Why is that? It seems fragile. The content of my data shouldn't substantially influence how functions/commands run.
zsh parameter
New contributor
add a comment |
A basic rule of zsh is that you don't need to quote your variables, for example:
% data="single argument"
% print -l $data
single argument
One exception I know of is that if an argument must not be skipped even if empty, it must be double quoted:
% emptyarg=
% functon count() { echo $# }
% count $emptyarg
0
% count "$emptyarg"
1
However, if an argument contains certain special characters, it must be quoted or the shell gives an error. Why is that? It seems fragile. The content of my data shouldn't substantially influence how functions/commands run.
zsh parameter
New contributor
A basic rule of zsh is that you don't need to quote your variables, for example:
% data="single argument"
% print -l $data
single argument
One exception I know of is that if an argument must not be skipped even if empty, it must be double quoted:
% emptyarg=
% functon count() { echo $# }
% count $emptyarg
0
% count "$emptyarg"
1
However, if an argument contains certain special characters, it must be quoted or the shell gives an error. Why is that? It seems fragile. The content of my data shouldn't substantially influence how functions/commands run.
zsh parameter
zsh parameter
New contributor
New contributor
New contributor
asked 1 hour ago
piojopiojo
1011
1011
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I noticed the behavior works as expected in scripts (parameters don't expand, even without quotes). I realized the issue was probably caused by an option, so I ran setopt
in my interactive shell and in a script and compared the results. I turned them off one by one until I found setopt noglobsubst
had the desired effect. In short, the GLOB_SUBST
option makes zsh treat all variables as patterns to be expanded if possible. You can disable this option and still expand variables when needed with the tilde ~
parameter expansion:
% setopt noglobsubst
% star=*
% echo $star
*
% echo $~star
readme.txt test.sh
New contributor
is theglobsubst
option on by default?
– Uncle Billy
54 mins ago
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
});
}
});
piojo is a new contributor. Be nice, and check out our Code of Conduct.
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%2f525337%2fhow-does-zsh-expand-variables-before-passing-to-programs%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I noticed the behavior works as expected in scripts (parameters don't expand, even without quotes). I realized the issue was probably caused by an option, so I ran setopt
in my interactive shell and in a script and compared the results. I turned them off one by one until I found setopt noglobsubst
had the desired effect. In short, the GLOB_SUBST
option makes zsh treat all variables as patterns to be expanded if possible. You can disable this option and still expand variables when needed with the tilde ~
parameter expansion:
% setopt noglobsubst
% star=*
% echo $star
*
% echo $~star
readme.txt test.sh
New contributor
is theglobsubst
option on by default?
– Uncle Billy
54 mins ago
add a comment |
I noticed the behavior works as expected in scripts (parameters don't expand, even without quotes). I realized the issue was probably caused by an option, so I ran setopt
in my interactive shell and in a script and compared the results. I turned them off one by one until I found setopt noglobsubst
had the desired effect. In short, the GLOB_SUBST
option makes zsh treat all variables as patterns to be expanded if possible. You can disable this option and still expand variables when needed with the tilde ~
parameter expansion:
% setopt noglobsubst
% star=*
% echo $star
*
% echo $~star
readme.txt test.sh
New contributor
is theglobsubst
option on by default?
– Uncle Billy
54 mins ago
add a comment |
I noticed the behavior works as expected in scripts (parameters don't expand, even without quotes). I realized the issue was probably caused by an option, so I ran setopt
in my interactive shell and in a script and compared the results. I turned them off one by one until I found setopt noglobsubst
had the desired effect. In short, the GLOB_SUBST
option makes zsh treat all variables as patterns to be expanded if possible. You can disable this option and still expand variables when needed with the tilde ~
parameter expansion:
% setopt noglobsubst
% star=*
% echo $star
*
% echo $~star
readme.txt test.sh
New contributor
I noticed the behavior works as expected in scripts (parameters don't expand, even without quotes). I realized the issue was probably caused by an option, so I ran setopt
in my interactive shell and in a script and compared the results. I turned them off one by one until I found setopt noglobsubst
had the desired effect. In short, the GLOB_SUBST
option makes zsh treat all variables as patterns to be expanded if possible. You can disable this option and still expand variables when needed with the tilde ~
parameter expansion:
% setopt noglobsubst
% star=*
% echo $star
*
% echo $~star
readme.txt test.sh
New contributor
New contributor
answered 1 hour ago
piojopiojo
1011
1011
New contributor
New contributor
is theglobsubst
option on by default?
– Uncle Billy
54 mins ago
add a comment |
is theglobsubst
option on by default?
– Uncle Billy
54 mins ago
is the
globsubst
option on by default?– Uncle Billy
54 mins ago
is the
globsubst
option on by default?– Uncle Billy
54 mins ago
add a comment |
piojo is a new contributor. Be nice, and check out our Code of Conduct.
piojo is a new contributor. Be nice, and check out our Code of Conduct.
piojo is a new contributor. Be nice, and check out our Code of Conduct.
piojo is a new contributor. Be nice, and check out our Code of Conduct.
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%2f525337%2fhow-does-zsh-expand-variables-before-passing-to-programs%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