2015-06-23 2 views
1

Я запускаю GNU bash, версия 4.3.11 (1) -release (x86_64-pc-linux-gnu). Очень простой скрипт вызывается из CMD линии с по крайней мере 3 произвольных аргументов:Ошибка: ошибка «недопустимого числа» при передаче значений элементов массива переменной

#!/bin/bash 

n_arg=$# 
arr=("[email protected]") 
AA=${arr[0]} # CHANGED FROM AA=S{arr[0]} 
BB=${arr[1]} # CHANGED FROM BB=S{arr[1]} 

for ((i = 2; i < "$n_arg"; i++)); do 
    printf "%d %s %s %s\n" $i $AA $BB ${arr[i]} # <- line 9 
    # printf "%d %s %s %s\n" $i "$AA" "$BB" ${arr[i]} # ALSO TRIED 
done 
exit 0 

дает ошибку, как показано ниже:

$ script.sh 10 2 13 443 
./script.sh: line 9: printf: S{arr[0]}: invalid number 
./script.sh: line 9: printf: S{arr[1]}: invalid number 
2 0 0 13 
./script.sh: line 9: printf: S{arr[0]}: invalid number 
./script.sh: line 9: printf: S{arr[1]}: invalid number 
3 0 0 443 

можно видеть, что значение первого и второго элементов массива передается к AA и BB соответственно, кажется, представляют собой prbm. Я не совсем понимаю. Я попытался: AA = "S {arr [0]}" Когда я ввожу код в интерактивном режиме, все идет гладко.

Еще одно сомнение в том, является ли этот фрагмент кода совместимым с POSIX.

+3

'S'? Вы имеете в виду '$'? Как, в 'AA = $ {arr [0]}' – bishop

+3

Похоже, вам нужны очки или лучший шрифт. =) –

+0

[ProggyFont] (http://www.proggyfonts.net/) правила. – bishop

ответ

0

S выглядит как $, особенно когда вы устали. Я использую font, предназначенный для того, чтобы четко различать подобные гомоглифы - рекомендуется.

Массивы не входят в состав POSIX shell standard. Вы можете свернуть свой собственный полиполк или использовать pre-fab one.

+0

Просто неопределенно хромой и вне темы, но настоящий короткий комментарий: .... Я взял совет и загрузил/установил proggy TTF. Это выглядит очень плохо в терминале на моем дисплее 1680x1050, потому что из-за высокого разрешения экрана я должен увеличить размер шрифта от 12 до 16 по умолчанию, чтобы читать отчетливо ... Так что, если не существует решения для четкого масштабирования TTF, доступного в терминале , это не для меня. Жаль, но совет очень ценит. – Cbhihe

+0

@Cbhihe Аналогичная ситуация здесь, 1920x1080 FHD, шрифт выглядит зубчатым при высоком размере точки. Однако я пришел к выводу, что это преимущество. Я не только получаю немного ежедневную ностальгию от чувства BBS 1993 года (о котором даже незнакомы комментируют), но я могу четко прочитать его издалека с помощью беспроводной клавиатуры. Но я думаю, это похоже на улиток в сливочном масле - приобретенный вкус. Тем не менее, есть несколько действительно хороших сглаженных шрифтов моноширинного программиста. [Вот отличная статья, в которой перечислены 10 из них.] (Http://hivelogic.com/articles/top-10-programming-fonts) – bishop

Смежные вопросы