
다음 결과를 얻기 위한 코드를 만들고 싶습니다.
echo -e "\t\tPlease enter your name?"
read name
name="${name,,}"
for i in $(echo "Hello " $name) ; do
echo ${i^}
done | sed 's/^/\t\t/;s/$/, here is your order:/'
다음과 같이 이름을 입력하면:mike denver
출력은 다음과 같습니다
<here come out the right space of two tabs>Hello, here is your order:
<here come out the right space of two tabs>Mike, here is your order:
<here come out the right space of two tabs>Denver, here is your order:
기본적으로 내가 넣은 탭 수( )를 기준으로 왼쪽에서 오른쪽 공백을 생성하지만 , 입력한 이름마다 플러스에 \t
대한 인쇄 줄을 반복합니다 . Hello
sed 명령을 외부에 넣는 방법을 이해하지 못했습니다. 내 예상 결과는 다음과 같습니다.
<here come out the right space of two tabs>Hello, Mike Denver here is your order:
답변1
루프 를 사용하는 것보다 for
다음을 수행하는 것이 훨씬 쉽습니다.
echo -e "\t\tPlease enter your name?"
read -a name
name="${name}"
echo -e "\t\tHello ${name[@]^}, here is your order:"
산출:
Please enter your name?
mike denver
Hello Mike Denver, here is your order:
인수를 큰따옴표로 묶으면 echo
변수가 확장되고 모든 것이 원하는 형식으로 한 번에 인쇄됩니다.
답변2
이름과 배열을 사용할 수 있습니다 printf
.
read -p $'\t\tPlease enter your name?\n' -a name
name=( "${name[@],,}" )
printf '\t\tHello %s, here is your order:\n' "${name[*]^}"