2012-01-20 3 views
0

나는 동이 내 자신을 시도했지만 나는 비참하게 실패했지만, 이것은 내가 쉬 (#/빈/쉬!)에 달성하기 위해 노력하고 무엇을 기본적으로 :문자열의 크기를 확인하고 크기에 따라 조작 하시겠습니까?

sudo는 코드

SOMEVAR="VALUE" 

if [ $SOMEVAR.length > 5] 
then 
# Take the first 5 characters of the string and add "HIS" to the end of them, assigning this new value to the SOMEVAR variable. 
else 
#just add "HIS" to the end of the string 
fi 

경우 누군가 내가 이걸 어떻게 성취 할 수 있는지 말해 줄 수 있는데, $ {# SOMEVAR}> 5와 $ {SOMEVAR : 0 : 5}를 사용해 보았습니다.하지만이 dosnet이 저에게 효과적입니다.

감사

+0

'sh'(Bourne Shell, 구식 Unix 공급 업체 플랫폼)를 사용하고 있습니까? 또는 bash 또는 ksh 또는 ???로 다시 태그 하시겠습니까? 행운을 빕니다. – shellter

답변

4

그것이 Bourne의 작동하게하려면, 당신은 사용할 수 있습니다 : 당신은 아마 한 줄이 작업을 수행 할 수 있습니다 Bourne 씨의 버전을 사용하는

#!/bin/sh 
SOMEVAR="HELLO WORLD" 
if [ ${#SOMEVAR} -gt 5 ] 
then 
    SOMEVAR=`expr substr "$SOMEVAR" 1 5`  
fi 
SOMEVAR="${SOMEVAR}HIS" 
+2

+1하지만 "expr substr foo 1 5"는 "foo"를 출력하기 때문에 길이 검사를 건너 뛰고 SOMEVAR = $ (expr substr "$ SOMEVAR"1 5)를 실행하면됩니다. –

1

expr 같은 다른 명령을 호출하지 않고 :

SOMEVAR=${SOMEVAR:0:5}HIS 

그러나 쉘이 멋진 하위 문자열 추출 구문을 지원하지 않으면 sed를 사용할 수 있습니다. (expr의 모든 버전이 substr을 지원하지는 않습니다).

SOMEVAR=`echo "$SOMEVAR" | sed 's/^\(.....\).*/\1/'`HIS 
관련 문제