在Bash脚本中更改变量值的参数

时间:2016-06-13 11:31:43

标签: bash variables arguments getopts

我在bash中有这个脚本:

#!/bin/bash
dir="/home/dortiz/Prueba"
for i in $dir/*
do
cat $i | awk '{print $1"  " $2"    " $3"    " $4"\n " $5}' | \
         awk '/gi/{print ">" $0; getline; print}' | \
         awk '$3>20.00 {print $0; getline; print;}' \
         >  "${i}.outsel"
done         
cd /home/dortiz/Prueba
mv *.outsel /home/dortiz/Prueba2

我想设置一个参数来改变“”awk'$ 3>“”之后的值,从我的主程序中调用这个脚本。

我已经阅读了一些关于getopts的内容,但我根本不理解它

提前多多感谢

1 个答案:

答案 0 :(得分:0)

最简单的方法是将参数传递给脚本:

yourscript.sh 20.0

然后在你的脚本中

#!/bin/bash
value=$1    # store the value passed in as the first parameter.
dir="/home/dortiz/Prueba"
for i in $dir/*; do
    awk '{print $1"  " $2"    " $3"    " $4"\n " $5}' "$i" |
    awk '/gi/{print ">" $0; getline; print}' | 
    awk -v val="$value" '$3>val {print $0; getline; print;}' >  "${i}.outsel"
    #   ^^^^^^^^^^^^^^^
done
...

cat|awk|awk|awk管道可能写成这样:

awk -v val="$value" '
    $3 > val {
        prefix = /gi/ ? ">" : ""
        print prefix $1 "  " $2"    " $3"    " $4"\n " $5
    }
' "$i" > "$i.outsel"