如何在Bash中的字符串中的每个字符上执行for循环?

我有一个像这样的变量:


words="这是一条狗。"

我想打一个for循环的每个字符,一次一个,例如,第一character="这",然后character="是",character="一"等


我知道的唯一方法是将每个字符输出到文件中的单独行,然后使用while read line,但这似乎效率很低。


如何通过for循环处理字符串中的每个字符?


回首忆惘然
浏览 1158回答 3
3回答

MMTTMM

随着sed上dash的壳LANG=en_US.UTF-8,我得到了以下工作的权利:$ echo "你好嗎 新年好。全型句號" | sed -e 's/\(.\)/\1\n/g'你好嗎新年好。全型句號和$ echo "Hello world" | sed -e 's/\(.\)/\1\n/g'Helloworld因此,输出可以与 while read ... ; do ... ; done针对示例文本进行了编辑,将其翻译成英文:"你好嗎 新年好。全型句號" is zh_TW.UTF-8 encoding for:"你好嗎"     = How are you[ doing]" "         = a normal space character"新年好"     = Happy new year"。全型空格" = a double-byte-sized full-stop followed by text description

呼唤远方

${#var} 返回的长度 var${var:pos:N}从pos开始返回N个字符例子:$ words="abc"$ echo ${words:0:1}a$ echo ${words:1:1}b$ echo ${words:2:1}c因此很容易迭代。其他方式:$ grep -o . <<< "abc"abc要么$ grep -o . <<< "abc" | while read letter;&nbsp; do echo "my letter is $letter" ; done&nbsp;my letter is amy letter is bmy letter is c
打开App,查看更多内容
随时随地看视频慕课网APP