在bash中打印输入的程序

在bash中打印输入的程序,bash,Bash,我是bash的新手,我正在为一个程序而挣扎。我想编写一个程序,首先要求用户输入,然后打印单词,单词之间有一个\n(空行)。最后一个回显包含写入的字符数。此外,输出只能包含单词,不能包含数字。例如: Input: hallo1 user2 Pete4 Ouput: hallo user Pete 13 Characters 这是我的时间代码 echo Typ one or multiple words: read varname arr=( &qu

我是bash的新手,我正在为一个程序而挣扎。我想编写一个程序,首先要求用户输入,然后打印单词,单词之间有一个\n(空行)。最后一个回显包含写入的字符数。此外,输出只能包含单词,不能包含数字。例如:

Input: hallo1 user2 Pete4
Ouput: hallo
       user
       Pete
       13 Characters
这是我的时间代码


echo Typ one or multiple words: 

read varname
arr=( "${arr[@]}" "$varname" )
for i in "${arr[@]}"; do
    echo "$i"
done

echo ${arr[@]}
# printf '%s\n' "${arr[@]}"

试试这个。对我有用。我在句子中添加了删除数字的命令。 在for之后,我首先删除名称之间的空格,然后使用#in${#aux}计算字符总数。我在第一个回音中也添加了参数-n,只是为了与第二个回音断线

echo Type one or multiple words: 

read varname
arr=( "${arr[@]}" "$varname" )
for i in "${arr[@]//[[:digit:]]/}"; do
    echo -n "$i"
done

aux=$(echo "${i}" | sed "s/ //g")
echo " " ${#aux} " Characters"

不使用数组的纯
bash
方法:

#!/bin/bash

echo 'Type one or multiple words on a line:'

read -r
words_without_digits=${REPLY//[0-9]}
line_without_blanks=${words_without_digits//[[:blank:]]}
printf '%s\n' $words_without_digits
echo "${#line_without_blanks} Characters"

您应该解释OPs代码中的错误以及原因,以及代码给出预期结果的原因。对。我编辑了我的答案。OP写了:
,然后打印出单词,单词之间有一个\n(空行)“
。这个脚本将单词写在同一行上。幸运的是,您(Nejat Aydin)的代码完全符合我的要求,因此,谢谢您。Tesekkur ederim abi。乔克·亚尔迪姆奇·奥尔登。谢谢你们两位。你们真的帮了我大忙!但有一件事(将文字打印在空白行上),我无法用José的代码找到。那么也许你能帮我一下?类似的。我刚刚发布了一个带有更正的新答案。您只需要通过printf更改echo。这将丢失当前输出以及与预期的差异。
echo Type one or multiple words: 

read varname
arr=( "${arr[@]}" "$varname" )
for i in "${arr[@]//[[:digit:]]/}"; do
    printf '%s\n'  $i
done

aux=$(echo "${i}" | sed "s/ //g")
echo ${#aux} " Characters"