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.1
是flask=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
回答:
随着bash
和if
:
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
或用bash
和case
:
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
回答:
其他几个选项:
使用
grep
来获取值flask_value=$(grep -oP '^flask=\K.*' test.txt)
case $flask_value in
1.0.1) ... ;;
# etc
esac
迭代只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