如何使用 bash 脚本将完全限定的类名转换为标题大小写?

Sta*_*wer 0 macos bash shell

我需要转换这样的东西

androidx.arch.core.executor.AppToolkitTaskExecutor
Run Code Online (Sandbox Code Playgroud)

对此

Androidx.Arch.Core.Executor.AppToolkitTaskExecutor
Run Code Online (Sandbox Code Playgroud)

我知道这sed可能对我有帮助,但我不够熟练,无法构建正确的命令。

Léa*_*ris 5

纯 Bash 解决方案:

#!/usr/bin/env bash

class=androidx.arch.core.executor.AppToolkitTaskExecutor

IFS=.

# Split Fully Qualified class path elements into array using dot delimiter
read -r -a class_array <<<"$class"

# Join the class_array's capitalized class path elements using the dot delimiter
printf -v title_class '%s' "${class_array[*]^}"

# Printout the original Fully Qualified Class Name
# and its matching Title Case Class Name
printf 'FQCN: %s\nTCCN: %s\n' "$class" "$title_class"
Run Code Online (Sandbox Code Playgroud)

输出:

FQCN: androidx.arch.core.executor.AppToolkitTaskExecutor
TCCN: Androidx.Arch.Core.Executor.AppToolkitTaskExecutor
Run Code Online (Sandbox Code Playgroud)

具有功能的替代方法:

#!/usr/bin/env bash

class2Title () {
  IFS=.
  set -- $@
  echo "${*^}"
}

class2Title net.example.bar.Foo
Run Code Online (Sandbox Code Playgroud)

输出:

Net.Example.Bar.Foo
Run Code Online (Sandbox Code Playgroud)