2012-01-20 7 views
0

私はドンにこの私の自己を試してみましたが、私は無残に失敗しているが、これは(#/ binに/ SH!)私はSHで達成しようとしていますどのような基本的には次のとおりです。文字列のサイズを確認し、サイズに応じて操作しますか?

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

あなたが本当に(旧ラインのUnixベンダーのプラットフォーム上で、ボーンシェル)「SH」を使用している(exprサポートSUBSTRのないすべてのバージョンが。ことに注意してください)?または、これをbashまたはksh、または???でリタッチしたいですか?がんばろう。 – shellter

答えて

4

#!/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)HIS –

1

おそらくexprのような他のコマンドを起動せずに1行でこれを行うことができボーンのバージョンを使用しています:

SOMEVAR=${SOMEVAR:0:5}HIS 

しかし、あなたのシェルがこのような部分文字列抽出構文をサポートしていない場合は、sedを使用できます。

SOMEVAR=`echo "$SOMEVAR" | sed 's/^\(.....\).*/\1/'`HIS 
関連する問題