Проблема, связанная с версией BASH - PullRequest
0 голосов
/ 23 марта 2012

Это утверждение отлично работает в BASH v. 4.1.7 (1), но не в BASH v. 4.2.20 (1)

num=${number:$counter:1}

Я получаю "Bad Substitution" в качестве ошибки. Любые идеи о том, почему это происходит? Цель состоит в том, чтобы сделать что-то похожее на ${string:position:length} для получения подстроки.

Любая помощь будет высоко ценится. Спасибо.

Исходный код с этой строкой добавлен ниже (строка 15)

#!/bin/bash

echo "Please enter a number: "
read number

counter=0
answer=0
end=$(( ${#number} - 1 ))

echo -n "The sum of all digits of "
echo -n $number
echo -n " is "

while [ $counter -lt ${#number} ] ; do
num=${number:$counter:1}
if [ $counter -lt $end ] ; then
echo -n $num
echo -n "+"
else
echo -n $num
echo -n "="
fi
answer=$(( $answer + $num ))
counter=`expr $counter + 1`
done

echo $answer

1 Ответ

2 голосов
/ 23 марта 2012

выражение хорошо с 4.2.20, когда я проверял это.может быть, у вас есть что-то в вашем env?

[localhost ~]$ bash --version
GNU bash, version 4.2.20(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[localhost ~]$ number=123
[localhost ~]$ counter=0
[localhost ~]$ echo $number
123
[localhost ~]$ num=${number:$counter:1}
[localhost ~]$ echo $num
1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...