How am I allowed to pass a void parameter through bash functions?
Clash Royale CLAN TAG#URR8PPP
I'm writing something like the following script. It's doesn't work as expected because the function deleteCEfromCeLst
has to call a script specifying to it a "void" parameter through the spawnPrg
function, but if I specify in the spawnPrg
function parameters the "void" parameter ''
, that I use when I call the script $HOME/execsh/delete.sh
directly from prompt, this "void" parameter results (correctly) as nothing and not as a not specified parameter.
The use of the spawnPrg
function is mandatory because it will be used from other functions called from the "main" flow or directly by the main flow, furthermore the function spawnPrg
shall contain behaviours act to register something like a log file.
#!/bin/bash
spawnPrg()
echo $@
$@ &
return
deleteCEfromCeLst()
local d
cat ce.lst
deleteCEfromCeLst
exit
I tried also to code deleteCEfromCeLst
as:
deleteCEfromCeLst()
local d
cat ce.lst
With the above code the result is that the function spawnPrg is executed as it is sent to the prompt as:
$HOME/execsh/delete.sh $1 '' $d
where the "void" parameter is specified as the string ''
that is either that the second parameter sent to the delete.sh
script is not a "void" parameter.
bash shell-script scripting bash-functions
add a comment |
I'm writing something like the following script. It's doesn't work as expected because the function deleteCEfromCeLst
has to call a script specifying to it a "void" parameter through the spawnPrg
function, but if I specify in the spawnPrg
function parameters the "void" parameter ''
, that I use when I call the script $HOME/execsh/delete.sh
directly from prompt, this "void" parameter results (correctly) as nothing and not as a not specified parameter.
The use of the spawnPrg
function is mandatory because it will be used from other functions called from the "main" flow or directly by the main flow, furthermore the function spawnPrg
shall contain behaviours act to register something like a log file.
#!/bin/bash
spawnPrg()
echo $@
$@ &
return
deleteCEfromCeLst()
local d
cat ce.lst
deleteCEfromCeLst
exit
I tried also to code deleteCEfromCeLst
as:
deleteCEfromCeLst()
local d
cat ce.lst
With the above code the result is that the function spawnPrg is executed as it is sent to the prompt as:
$HOME/execsh/delete.sh $1 '' $d
where the "void" parameter is specified as the string ''
that is either that the second parameter sent to the delete.sh
script is not a "void" parameter.
bash shell-script scripting bash-functions
add a comment |
I'm writing something like the following script. It's doesn't work as expected because the function deleteCEfromCeLst
has to call a script specifying to it a "void" parameter through the spawnPrg
function, but if I specify in the spawnPrg
function parameters the "void" parameter ''
, that I use when I call the script $HOME/execsh/delete.sh
directly from prompt, this "void" parameter results (correctly) as nothing and not as a not specified parameter.
The use of the spawnPrg
function is mandatory because it will be used from other functions called from the "main" flow or directly by the main flow, furthermore the function spawnPrg
shall contain behaviours act to register something like a log file.
#!/bin/bash
spawnPrg()
echo $@
$@ &
return
deleteCEfromCeLst()
local d
cat ce.lst
deleteCEfromCeLst
exit
I tried also to code deleteCEfromCeLst
as:
deleteCEfromCeLst()
local d
cat ce.lst
With the above code the result is that the function spawnPrg is executed as it is sent to the prompt as:
$HOME/execsh/delete.sh $1 '' $d
where the "void" parameter is specified as the string ''
that is either that the second parameter sent to the delete.sh
script is not a "void" parameter.
bash shell-script scripting bash-functions
I'm writing something like the following script. It's doesn't work as expected because the function deleteCEfromCeLst
has to call a script specifying to it a "void" parameter through the spawnPrg
function, but if I specify in the spawnPrg
function parameters the "void" parameter ''
, that I use when I call the script $HOME/execsh/delete.sh
directly from prompt, this "void" parameter results (correctly) as nothing and not as a not specified parameter.
The use of the spawnPrg
function is mandatory because it will be used from other functions called from the "main" flow or directly by the main flow, furthermore the function spawnPrg
shall contain behaviours act to register something like a log file.
#!/bin/bash
spawnPrg()
echo $@
$@ &
return
deleteCEfromCeLst()
local d
cat ce.lst
deleteCEfromCeLst
exit
I tried also to code deleteCEfromCeLst
as:
deleteCEfromCeLst()
local d
cat ce.lst
With the above code the result is that the function spawnPrg is executed as it is sent to the prompt as:
$HOME/execsh/delete.sh $1 '' $d
where the "void" parameter is specified as the string ''
that is either that the second parameter sent to the delete.sh
script is not a "void" parameter.
bash shell-script scripting bash-functions
bash shell-script scripting bash-functions
asked Feb 2 at 12:09
Sir Jo BlackSir Jo Black
1965
1965
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Quote the variable expansions.
If we have a script foo.sh
:
$ cat foo.sh
#!/bin/sh
args()
printf ">%s<n" "$@"
args "$1" "" foo
And we call it with sh foo.sh ""
, the output is:
><
><
>foo<
That is, one empty argument from "$1"
(the argument to foo.sh
), another from the hard-coded ""
in the script, and then the fixed string foo
.
If either of $@
or $1
would have been unquoted, the empty values in question would disappear as part of word splitting.
See:
- This wiki page on word splitting: http://mywiki.wooledge.org/WordSplitting
- Why does my shell script choke on whitespace or other special characters?
- When is double-quoting necessary?
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%2f498277%2fhow-am-i-allowed-to-pass-a-void-parameter-through-bash-functions%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
Quote the variable expansions.
If we have a script foo.sh
:
$ cat foo.sh
#!/bin/sh
args()
printf ">%s<n" "$@"
args "$1" "" foo
And we call it with sh foo.sh ""
, the output is:
><
><
>foo<
That is, one empty argument from "$1"
(the argument to foo.sh
), another from the hard-coded ""
in the script, and then the fixed string foo
.
If either of $@
or $1
would have been unquoted, the empty values in question would disappear as part of word splitting.
See:
- This wiki page on word splitting: http://mywiki.wooledge.org/WordSplitting
- Why does my shell script choke on whitespace or other special characters?
- When is double-quoting necessary?
add a comment |
Quote the variable expansions.
If we have a script foo.sh
:
$ cat foo.sh
#!/bin/sh
args()
printf ">%s<n" "$@"
args "$1" "" foo
And we call it with sh foo.sh ""
, the output is:
><
><
>foo<
That is, one empty argument from "$1"
(the argument to foo.sh
), another from the hard-coded ""
in the script, and then the fixed string foo
.
If either of $@
or $1
would have been unquoted, the empty values in question would disappear as part of word splitting.
See:
- This wiki page on word splitting: http://mywiki.wooledge.org/WordSplitting
- Why does my shell script choke on whitespace or other special characters?
- When is double-quoting necessary?
add a comment |
Quote the variable expansions.
If we have a script foo.sh
:
$ cat foo.sh
#!/bin/sh
args()
printf ">%s<n" "$@"
args "$1" "" foo
And we call it with sh foo.sh ""
, the output is:
><
><
>foo<
That is, one empty argument from "$1"
(the argument to foo.sh
), another from the hard-coded ""
in the script, and then the fixed string foo
.
If either of $@
or $1
would have been unquoted, the empty values in question would disappear as part of word splitting.
See:
- This wiki page on word splitting: http://mywiki.wooledge.org/WordSplitting
- Why does my shell script choke on whitespace or other special characters?
- When is double-quoting necessary?
Quote the variable expansions.
If we have a script foo.sh
:
$ cat foo.sh
#!/bin/sh
args()
printf ">%s<n" "$@"
args "$1" "" foo
And we call it with sh foo.sh ""
, the output is:
><
><
>foo<
That is, one empty argument from "$1"
(the argument to foo.sh
), another from the hard-coded ""
in the script, and then the fixed string foo
.
If either of $@
or $1
would have been unquoted, the empty values in question would disappear as part of word splitting.
See:
- This wiki page on word splitting: http://mywiki.wooledge.org/WordSplitting
- Why does my shell script choke on whitespace or other special characters?
- When is double-quoting necessary?
answered Feb 2 at 12:18
ilkkachuilkkachu
59.8k895169
59.8k895169
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.
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%2f498277%2fhow-am-i-allowed-to-pass-a-void-parameter-through-bash-functions%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