다음 결과를 얻기 위한 코드를 만들고 싶습니다.
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[*]^}"