Bashから変数の最後の文字を削除します。

Bashから変数の最後の文字を削除します。

次のコードがあります。

testval="aaa_bbb_ccc," 
testval+="_ddd"
echo ${testval}

ただし、「後ろにカンマ」を削除する必要があります。ccc${testval}追加する前は常に最後の文字でした。_ddd文字列に追加のカンマを保持する必要があるかもしれません。

しかし、これまで私は動作しているものが見つかりませんでした。

例えば

testval="aaa_bbb_ccc," ; 
testval=${testval} | rev | cut -c 2- | rev ; testval+="_ddd" ; 
echo ${testval}

または

testval="aaa_bbb_ccc," ; 
testval=${testval} | sed 's/.$//' ; testval+="_ddd" ; 
echo ${testval}

どちらも次のようになります。

aaa_bbb_ccc,_ddd

私も次のことを試しました。

testval="aaa_bbb_ccc," ; 
testval=$(${testval} | rev | cut -c 2- | rev) ; 
testval+="_ddd" ; 
echo ${testval}`

そして

testval="aaa_bbb_ccc," ; 
testval=$(${testval} | sed 's/.$//') ; 
testval+="_ddd" ; 
echo ${testval}

どちらも次のようになります。

-su: {testval}: command not found**

rtrim同等または類似の機能はありませんか?これは最後のものをトリミングします。N文字列/変数の文字

ベストアンサー1

同様の機能に対応する機能やrtrimはありませんか?文字列/変数から最後のn文字を削除します。

ここで:

   ${parameter%word}
   ${parameter%%word}
          Remove matching suffix pattern.

この%フォームは最短一致を削除し、%%最長一致を削除します。対応する「ltrim」はと${parameter#word}です${parameter##word}

例えば

$ testval="aaa_bbb_ccc,"
$ testval=${testval%,}
$ echo ${testval}
aaa_bbb_ccc

あなたの場合

$ testval="aaa_bbb_ccc,"
$ testval=${testval%,}
$ testval+="_ddd"
$ echo ${testval}
aaa_bbb_ccc_ddd

,これを変更して?単一の文字を削除したり、???n = 3つの末尾の文字を変更したりできます。 Bashでシェルオプションが設定されている場合、wordKSHスタイル拡張グローバルモードになることができます。extglob

おすすめ記事