BASH - 从一个文件中获取数,并用它

我有一个test.txt文件看起来像这样:BASH - 从一个文件中获取数,并用它

flask=1.0.1 

control=1.0.1

device=1.0.1

现在,我想创建一个if语句,如果瓶= 1.0.1,做如果flash = 1.0.1_hotfix做了别的事情。

我试过grep -iFq,但没有运气,我是新手,也是编程。

任何人都可以告诉我一个文档,解释如何做到这一点?这真的很简单。

谢谢大家!

回答:

grep很好,只是注意到flask=1.0.1flask=1.0.1_hotfix的一个子串,所以你需要做全字符串比较或者检查字符串结束。

flask=$(grep ^flask= test.txt) 

if [ "$flask" == flask=1.0.1 ] ; then

...

elif [ "$flask" == flask=1.0.1_hotfix ] ; then

....

fi

回答:

我已经理解正确吗?

[[email protected] Build]# cat 1 

flask=1.0.1

control=1.0.1

device=1.0.1

[[email protected] Build]# cat ez.sh

#!/bin/bash

a=($(cat 1))

for ver in "${a[@]}"

do

if [ $(echo "${ver}" | awk -F= '{print $NF}') == "1.0.1" ]

then

echo "Do something virh $ver"

else

echo "Do anything else with $ver"

fi

done

回答:

随着bashif

source test.txt 

if [[ $flask == 1.0.1 ]]; then

echo "do something"

fi

if [[ $flask == 1.0.1_hotfix ]]; then

echo "do something else"

fi

或用bashcase

source test.txt 

case $flask in

1.0.1)

echo "do something"

;;

1.0.1_hotfix)

echo "do something else"

;;

esac

或者在更密集的演讲:

source test.txt 

case $flask in

1.0.1) echo "do something" ;;

1.0.1_hotfix) echo "do something else" ;;

esac

回答:

其他几个选项:

  1. 使用grep来获取值

    flask_value=$(grep -oP '^flask=\K.*' test.txt) 

    case $flask_value in

    1.0.1) ... ;;

    # etc

    esac

  2. 迭代只bash的文件了:

    while IFS="=" read var value; do 

    if [[ $var == "flask" ]]; then

    case $value in

    1.0.1) ... ;;

    # etc

    esac

    fi

    done < test.txt

以上是 BASH - 从一个文件中获取数,并用它 的全部内容, 来源链接: utcz.com/qa/263735.html

回到顶部