2017-03-19 1 views
0

헤이 기본적으로 지금 내 프로그램이 나에게이 출력 제공에 문자열을 확장하는 방법 :
TEXTEXOUAIGJIOAJGOAJFKJAFKLAJKLFJKL
TEXT
LIMIT OVER RANDOM 캐릭터의 더 많은 텍스트특정 길이

BLABLABLA을하는 for 루프의 결과입니다. 지금 여기에 내가 원하는 무엇 : 10 자 이상

  • 경우 문자열 raches, 나머지 부분을 잘라 끝 부분에 두 개의 점을 & 콜론을 추가 ".."그렇지 않으면
  • (문자열 미만 10 개 문자가있는 경우 그들은 그래서 내가 출력으로 이런 일을 싶어 제공된 예제에

을 alligned하고 있으므로) 공간과의 격차를 채우기 :

BLABLABLA : 
TEXTEXOUA..: 
TEXT  : 
MORE TEXT..: 

나는 또한 Fi를 해결 문제의 첫 번째 부분 (10자를 초과하는 경우)은 두 번째 문제 만이 문제가됩니다.

AMOUNT=definition here, just simplyfying so not including it 
for ((i=1; i<="$AMOUNT"; i++)); do 
STRING=definition here, just simplyfying so not including it 
DOTS="..:" 
STRING_LENGTH=`echo -n "$STRING" | wc -c` 
if [ "$STRING_LENGTH" -gt 10 ] 
    then 
      #Takes 
      STRING=`echo -n "${STRING:0:10}"$DOTS` 
    else 
      #now i dont know what to do here, how can i take my current $STRING 
      #and add spaces " " until we reach 10 characters. Any ideas? 
    fi 
+0

될 수 있습니다 "TEXT ..."아홉 개 문자 후 –

+0

귀하의 예를 출력 잘라냅니다. –

답변

2

배쉬 변수에 저장된 문자열의 길이를 얻을 수있는 간단한 방법을 제공합니다 : 당신이 문제의 요구 사항과 일치하지 않습니다 게시 ${#STRING}

STRING="definition here, just simplyfying so not including it" 
if [ ${#STRING} -gt 10 ]; then 
    STR12="${STRING:0:10}.." 
else 
    STR12="$STRING   "   # 12 spaces here  
    STR12="${STR12:0:12}" 
fi 
echo "$STR12:" 

예상 출력. 나는 요구 사항을 따르려고했고 샘플 예상 출력과 게시 한 코드를 무시했습니다.

0

사용의 printf :

PADDED_STRING=$(printf %-10s $STRING)