我有一个看起来像这样的test.txt文件:
flask=1.0.1
control=1.0.1
device=1.0.1
现在,我想创建一个if语句,如果flask = 1.0.1,则执行某些操作,如果flash = 1.0.1_hotfix则执行其他操作。
我试过grep -iFq
,但没有运气,我是bash的新手,也是编程。
有人能告诉我一个解释如何操作的文档吗?这真的很简单。
谢谢大家!
答案 0 :(得分:4)
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
答案 1 :(得分:1)
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
答案 2 :(得分:0)
我理解你了吗?
[root@212-24-57-104 Build]# cat 1
flask=1.0.1
control=1.0.1
device=1.0.1
[root@212-24-57-104 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
答案 3 :(得分:0)
其他几个选项:
使用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