重击。读取符号之间的输入“单词”字符串

时间:2018-11-22 10:13:06

标签: linux bash shell

我正在创建的bash中有这种输入:

猫狗狮子

我需要我的程序对像这样的每个单词做一些事情

`if first_word == "cat" 
 do stuff 
    if second_word == "dog" 
    do other stuff`

我应该怎么做? 谢谢

2 个答案:

答案 0 :(得分:0)

BASH解决方案:

valueOf()

如果要在此处使用AWK解决方案,则为:

input='cat-dog-lion'
if [[ "${input}" =~ "^cat-?" ]]
then
  echo "do stuff"
  if [[ "${input}" =~ "^cat-dog-?" ]]
  then
    echo "do other stuff"
  fi
fi

测试:

awk -F'-' '{ if ($1=="cat") { print("do stuff"); if ($2=="dog") print("do other stuff"); } }'

答案 1 :(得分:-1)

如果输入字段分隔符是-,则应在适当设置IFS的情况下调用read

echo 'cat-dog-lion' | { IFS=- read first_word second_word third_word other_stuff
case $first_word in
cat) ... ;;
*)   ... ;;
esac
case $second_word in
...
esac
...
}

请注意,包围{}很重要,因为变量在闭合{之后超出范围。 (管道创建了一个存在变量的子流程。)