Bootstrap FreeKB - Bash (Scripting) - Running commands in a bash shell script
Bash (Scripting) - Running commands in a bash shell script

Updated:   |  Bash (Scripting) articles

Often, running commands in a Bash Shell Script is fairly straight forward. In this example, the "echo" and "date" commands are run.

#!/bin/bash
echo "Hello World"
date

 

Running this script should return something like this.

Hello World
Fri Sep  6 04:38:34 CDT 2024

 

However, this can be a bit tricky if you are using Bash to run some other program. For example, let's say you are using Bash to run a Python script. If your Bash script uses the python CLI to run a Python script, this should work exactly the same as running the Python script on the Linux command line.

#!/bin/bash
python /path/to/example.py --name "John Doe"

 

But if you store the command you want to run in a variable and try to run the command using the variable.

#!/bin/bash
cmd="python /path/to/example.py --name \"John Doe\""
$cmd

 

Something like this may be returned.

example.py: error: unrecognized arguments: Doe"

 

This happens because a variable is delimited by whitespace, thus "John" and "Doe" in this example are unique elements in the variable. Often, this can be resolved by storing the command you want to run in an array.

#!/bin/bash
cmd=(python /path/to/example.py --name "John Doe")
"${cmd[@]}"

 

Almost always, the command being run will return stdout and/or stderr, thus you almost always are going to want to store the stdout/stderr in a variable. In this example, the stdout/stderr is stored in a variable named "result".

#!/bin/bash
cmd=(python /path/to/example.py --name "John Doe")
result=$("${cmd[@]}" 2>&1)
echo "\$result = $result"

 

 

 




Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee



Comments


Add a Comment


Please enter bea9da in the box below so that we can be sure you are a human.