Я запускаю 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.
'S'? Вы имеете в виду '$'? Как, в 'AA = $ {arr [0]}' – bishop
Похоже, вам нужны очки или лучший шрифт. =) –
[ProggyFont] (http://www.proggyfonts.net/) правила. – bishop