带分隔符的Bash脚本传递变量

时间:2019-04-05 21:20:05

标签: bash sed case

我对bash脚本非常陌生。我想创建一个脚本来解析包含破折号的变量,并使用每个解析后的值继续执行其他功能。

例如:

project="Acc-Account-Profile_info"
for i in ($project |sed 's/-/ /g')
do
    case $i in ($project |sed 's/-/ /g')
        echo DeptName = $i
        shift
        ;;
    case $i in ($project |sed 's/-/ /g')
        echo GroupName= = $i
        shift
        ;;
    case $i in ($project |sed 's/-/ /g')
        echo projectName= = $i
        shift
        ;;
    esac
done

我希望这些值像:-

DeptName = ACC
GroupName = Account
projectName= Profile_info

现在我不断收到语法错误。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您为什么不使用read

project='Acc-Account-Profile_info'
IFS=- read -r DeptName GroupName projectName <<< "$project"
echo "DeptName = $DeptName"
echo "GroupName = $GroupName"
echo "projectName = $projectName"

答案 1 :(得分:0)

IFS='-';set -f;project="Acc-Account-Profile_info"
for i in $project
{
case $i in
Account)
  GroupName=$i
  echo $GroupName;;
Acc) DeptName=$i
   echo $DeptName;;
Profile_info)
  projectName=$i
  echo $projectName;;
esac
}
unset IFS;set +f

更好的使用方式-用于输入更多数据