문자열과 숫자라는 두 개의 매개변수를 사용하는 스크립트를 작성하고 싶습니다. 이 스크립트는 별표로 반올림된 문자열을 n번 인쇄합니다. 그래서 전의 경우. script "Hello World!" 3
다음을 인쇄합니다:
**************
*Hello World!*
*Hello World!*
*Hello World!*
**************
어떻게 해야 하나요?
답변1
*
문자열의 길이를 입력의 길이와 동일하게 만드는 데 사용할 수 있습니다 sed
. 매우 간단하게 반복할 수도 있습니다. 각 라인의 출력은 다음과 같습니다.
*$stars*
*$input*
...repeated...
*$stars*
*
따라서 우리는 원하는 문자열을 배치하는 간단한 "출력" 함수를 만들 수 있습니다.
#!/bin/bash
string=$1
count=$2
stars=$(echo "$string" | sed 's/./*/g')
output() { printf "*%s*\n" "$1"; }
output "$stars"
for ((a=0;a<$count;a++))
{
output "$string"
}
output "$stars"
예를 들어
./x "Hello world!" 3
**************
*Hello world!*
*Hello world!*
*Hello world!*
**************
답변2
이를 수행하는 한 가지 방법은 seq를 사용하여 문자열이 에코된 횟수를 나타내고 printf를 사용하여 별표에 대한 문자열 작업을 수행하는 것입니다.
SAY=$1
NUM=$2
CMD="echo *$SAY*"
c="${SAY//[*]}**"
s=$(printf "%-${#c}s" "*")
echo "${s// /*}"
for i in $(seq $NUM)
do $CMD
done
echo "${s// /*}"
그런 다음 매개변수와 함께 스크립트를 사용할 수 있습니다../script.sh "Hello World" 3