#!/bin/bash
a=ača
echo ${#a} #returns 3
echo $a | xargs -rL1 sh -c 'echo ${#0}'; #returns 4
在第一个回声中,它给了我正确的弦长。我该怎么做,在第二个回声中返回正确的弦长? (我希望在两种情况下长度为3)
在我的程序中,我有很多行,我必须编辑,这就是我使用xargs的原因。
答案 0 :(得分:3)
问题不在于xargs
。问题是sh
。如果需要正确的(unicode)长度,则需要使用支持unicode的shell。观察:
$ echo $a | xargs -rL1 sh -c 'echo ${#0}'
4
$ echo $a | xargs -rL1 bash -c 'echo ${#0}'
3
在类似debian的系统上,默认shell /bin/sh
实际上是dash
,它不了解unicode。如上所示,只需将sh
替换为bash
即可解决问题。