Loading commands from file
If you have a file with a list of shell commands, one per line, then you have a shell script! All you need to do is run it:
sh file_commands
However, that isn't the simplest approach for what I think you need. If you want to run program.awk
on each d??.active
file in the current directory, you can simply use a loop:
for file in d??.active; do awk -f program.awk "$file" > "$file".out; done
That will create a d01.active.out
out file for d01.active
, a d02.active.out
file for d02.active
and so on.
A shell script is essentially a list of commands terminated by line separators that will be interpreted as a list of commands by the specified (or default) interpreter.
To specify an interpreter your file should start with a hashbang (also called shebang).
Examples:
#!/bin/sh
#!/bin/bash
#!/bin/ksh
#!/bin/zsh
#!/usr/bin/env bash
Note: each of these interpreters have their own syntax and set of rules. You should study the manual for whichever one you plan on using.
After your hashbang you can essentially just start listing your commands to be executed each on their own line.
Note: these commands will be executed in order from top to bottom
In your example you would want something like:
#!/bin/sh
awk -f program.awk d01.active > out1
awk -f program.awk d02.active > out2
You would then have to make this file executable and would run it by specifying the full or relative path to the file on the command line. (or by running sh /path/to/file
)
This does seem like a potential x-y problem though and can probably be handled in a more programmatic way.
Such as:
#!/bin/bash
for file in d??.active; do
n=${file:1:2}
awk -f program.awk "$file" > "out$n"
done