How to pass multiple files to a Bash script as variables?
I have a bash script, let's call it myscript
, that is supposed to accept files in the current working directory as variables and perform various actions on them.
I've been able to set up this:
#!/bin/bash
file=$1
command1 $file
command2 $file
that works fine, when I run myscript myfile1.ext
it correctly executes command1 myfile1.ext
and command2 myfile1.ext
.
The problem is that I'd like to pass more filenames on the same instance, to speed up things, and be able to do this: myscript myfile1.ext myfile2.ext myfile3.ext myfile4.ext
and have each one of these files be processed by the script. Right now, even if I pass more filenames, only the first one is processed.
How should I modify this script to sequentially work on multiple files?
linux bash
add a comment |
I have a bash script, let's call it myscript
, that is supposed to accept files in the current working directory as variables and perform various actions on them.
I've been able to set up this:
#!/bin/bash
file=$1
command1 $file
command2 $file
that works fine, when I run myscript myfile1.ext
it correctly executes command1 myfile1.ext
and command2 myfile1.ext
.
The problem is that I'd like to pass more filenames on the same instance, to speed up things, and be able to do this: myscript myfile1.ext myfile2.ext myfile3.ext myfile4.ext
and have each one of these files be processed by the script. Right now, even if I pass more filenames, only the first one is processed.
How should I modify this script to sequentially work on multiple files?
linux bash
add a comment |
I have a bash script, let's call it myscript
, that is supposed to accept files in the current working directory as variables and perform various actions on them.
I've been able to set up this:
#!/bin/bash
file=$1
command1 $file
command2 $file
that works fine, when I run myscript myfile1.ext
it correctly executes command1 myfile1.ext
and command2 myfile1.ext
.
The problem is that I'd like to pass more filenames on the same instance, to speed up things, and be able to do this: myscript myfile1.ext myfile2.ext myfile3.ext myfile4.ext
and have each one of these files be processed by the script. Right now, even if I pass more filenames, only the first one is processed.
How should I modify this script to sequentially work on multiple files?
linux bash
I have a bash script, let's call it myscript
, that is supposed to accept files in the current working directory as variables and perform various actions on them.
I've been able to set up this:
#!/bin/bash
file=$1
command1 $file
command2 $file
that works fine, when I run myscript myfile1.ext
it correctly executes command1 myfile1.ext
and command2 myfile1.ext
.
The problem is that I'd like to pass more filenames on the same instance, to speed up things, and be able to do this: myscript myfile1.ext myfile2.ext myfile3.ext myfile4.ext
and have each one of these files be processed by the script. Right now, even if I pass more filenames, only the first one is processed.
How should I modify this script to sequentially work on multiple files?
linux bash
linux bash
edited Feb 12 at 22:42
Sekhemty
asked Feb 12 at 22:12
SekhemtySekhemty
3,991114482
3,991114482
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
A straightforward approach is like this:
#!/bin/sh
for file in "$@"; do
command1 "$file"
command2 "$file"
done
Notes:
- The code is not Bash-specific, it works in
sh
(hence my shebang).
Quote variables like I did.
You can implement more complex logic with shift
shell builtin. See the documentation or help shift
in Bash.
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fsuperuser.com%2fquestions%2f1405033%2fhow-to-pass-multiple-files-to-a-bash-script-as-variables%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
A straightforward approach is like this:
#!/bin/sh
for file in "$@"; do
command1 "$file"
command2 "$file"
done
Notes:
- The code is not Bash-specific, it works in
sh
(hence my shebang).
Quote variables like I did.
You can implement more complex logic with shift
shell builtin. See the documentation or help shift
in Bash.
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
add a comment |
A straightforward approach is like this:
#!/bin/sh
for file in "$@"; do
command1 "$file"
command2 "$file"
done
Notes:
- The code is not Bash-specific, it works in
sh
(hence my shebang).
Quote variables like I did.
You can implement more complex logic with shift
shell builtin. See the documentation or help shift
in Bash.
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
add a comment |
A straightforward approach is like this:
#!/bin/sh
for file in "$@"; do
command1 "$file"
command2 "$file"
done
Notes:
- The code is not Bash-specific, it works in
sh
(hence my shebang).
Quote variables like I did.
You can implement more complex logic with shift
shell builtin. See the documentation or help shift
in Bash.
A straightforward approach is like this:
#!/bin/sh
for file in "$@"; do
command1 "$file"
command2 "$file"
done
Notes:
- The code is not Bash-specific, it works in
sh
(hence my shebang).
Quote variables like I did.
You can implement more complex logic with shift
shell builtin. See the documentation or help shift
in Bash.
edited Feb 12 at 22:28
answered Feb 12 at 22:18
Kamil MaciorowskiKamil Maciorowski
28.6k156187
28.6k156187
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
add a comment |
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
Thanks, it was easier than I expected :)
– Sekhemty
Feb 12 at 22:43
add a comment |
Thanks for contributing an answer to Super User!
- 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%2fsuperuser.com%2fquestions%2f1405033%2fhow-to-pass-multiple-files-to-a-bash-script-as-variables%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