【问题标题】:Pig latin in BashBash 中的猪拉丁语
【发布时间】:2018-03-28 06:53:54
【问题描述】:

这个猪拉丁语翻译器适用于所有以元音开头的单词;但是,当参数以辅音开头时,此脚本不会打印任何内容

PIGIFY=$1
vowels=(a e i o u A E I O U)
CHECK=0
for element in $vowels; do
    if [[ $element == ${PIGIFY:0:1} ]]
    then
        echo ${PIGIFY}ay
        break
    fi
    if [ $CHECK -eq 9 ]
    then
       echo ${PIGIFY:1}${PIGIFY:0:1}way
    fi   
    CHECK=$(( CHECK+1 ))
done

我的脚本将尝试将参数的第一个字母与所有可能的元音进行比较,包括大写字母。一旦我们有到达器 U 并且我们发现单词不是以 U 开头的,计数器应该等于 9,然后我希望第二部分被回显。我想知道我的第二个条件是否格式正确,或者我是否弄乱了计数器的增量。

【问题讨论】:

  • $vowels 仅扩展为 a,因为它等同于 ${vowels[0]}。你的意思可能是"${vowels[@]}"

标签: bash for-loop conditional


【解决方案1】:

与其尝试在 for 循环中执行所有这些逻辑,不如在找到元音时设置一个变量,中断循环,然后根据新变量执行 echo:

PIGIFY=$1
vowels=(a e i o u A E I O U)
for element in $vowels; do
    if [[ $element == ${PIGIFY:0:1} ]]
    then
        startswithvowel=true
        break
    fi
done

if [ $startswithvowel ]; then
        echo ${PIGIFY}ay
else
        echo ${PIGIFY:1}${PIGIFY:0:1}way
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多