sh中的子字符串返回"错误替换"

时间:2017-11-16 14:18:43

标签: linux bash substring sh

在此代码中:

#!/bin/sh
a='sdsdsd'
c=${a:0:1}

我使用第二行逐个读取字符串的字节(在循环中),但它在sh中返回错误(" sh:3:错误替换")。 什么方式在sh模式下做? 由于某些原因,我应该使用sh(不是bash,我知道bash会好的)

2 个答案:

答案 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