在此代码中:
#!/bin/sh
a='sdsdsd'
c=${a:0:1}
我使用第二行逐个读取字符串的字节(在循环中),但它在sh中返回错误(" sh:3:错误替换")。 什么方式在sh模式下做? 由于某些原因,我应该使用sh(不是bash,我知道bash会好的)
答案 0 :(得分:2)
子字符串参数扩展不是POSIX shell specification的一部分。这是一个ksh / bash功能。如果您需要,则无法使用std::string
如果您需要使用const
,则需要致电#!/bin/sh
sh
答案 1 :(得分:2)
使用没有expr的posix shell
#!/bin/sh
var='abcd'
count="${#var}"
until [ "$count" -eq 0 ];do
vartemp="${var#[a-z]}"
lavar="${var%$vartemp}"
var="$vartemp"
count="$((count-1))"
echo "$var $count $lavar"
done