Suppose I have a script: my_script.sh
Instead of doing
./my_script.sh
I want to do something like:
cat my_script.sh | <some command here>
such that the script executes. Is this possible?
The use case is if the script I want to execute is the output of a wget or s3cat, etc. Right now I save it to a temporary file, change it to executable, and then run it. Is there a way to do it directly?
Just pipe it to your favorite shell, for example:
$ cat my_script.sh
set -x
echo hello
$ cat my_script.sh | sh
+ echo hello
hello
(The set -x
makes the shell print out each statement it is about to run before it runs it, handy for debugging, but it has nothing to do with your issue specifically - just there for demo purposes.)
You could use stdin from pipe:
cat my_script.sh | xargs -i <some_command> {}
or:
cat my_script.sh | bash -
or (just from stdin):
bash < my_script.sh
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With