Bash Pass Shell Variables To Awk Script

Bash Pass Shell Variables To Awk Script

To pass shell variables to an awk script in Bash, you can use the -v option followed by the variable name and value.

Here's an example of how you can pass a shell variable to an awk script:

#!/bin/bash

# Set the shell variable
var="Hello, world!"

# Pass the shell variable to the awk script
awk -v myvar="$var" '{print myvar}'
Sou‮w:ecr‬ww.lautturi.com

This script will set the var variable to "Hello, world!" and pass it to the awk script as the myvar variable. The awk script will then print the value of the myvar variable.

You can also pass multiple shell variables to an awk script by using multiple -v options. For example:

#!/bin/bash

# Set the shell variables
var1="Hello,"
var2="world!"

# Pass the shell variables to the awk script
awk -v var1="$var1" -v var2="$var2" '{print var1, var2}'

This script will set var1 to "Hello," and var2 to "world!", and pass them to the awk script as the var1 and var2 variables. The awk script will then print the values of the var1 and var2 variables.

Keep in mind that the awk script will treat the shell variables as strings, even if they contain numeric values. To use the variables as numbers in the awk script, you need to explicitly convert them to numbers using the tonumber() function.

For example:

#!/bin/bash

# Set the shell variables
var1=42
var2=3.14

# Pass the shell variables to the awk script
awk -v var1="$var1" -v var2="$var2" '{print tonumber(var1)+tonumber(var2)}'

This script will set var1 to 42 and var2 to 3.14, and pass them to the awk script as the var1 and var2 variables. The awk script will then convert the variables to numbers using the tonumber() function and print the sum of the two variables.

Created Time:2017-10-27 14:56:35  Author:lautturi