Если вы сделали скрипт исполняемым: chmod u+x script.sh
и вы вызываете его как:
$ ./script.sh
скрипт будет загружать Баш как интерпретатор сценария.
Если вы используете что-то вроде: sh script.sh
, то может быть, что ваша используемая оболочка - это что-то еще, например, тире, ksh, zsh или какой-либо другой набор в качестве оболочки, связанной с ссылкой на файл/bin/sh.
Проверьте, что Bash является исполняющей оболочкой. Если еще в задачах:
пространства после =
интерпретируется оболочкой как новое слово, которое будет выполняться.
Поэтому попытка выполнить команду с именем 4, 9 or 16, etc.
вызовет ошибку command not found
.
Это не будет работать (нет необходимости использовать i=1
, как он установлен на для начала):
#!/bin/bash
echo "Shows the numbers from 1 to 100 and their squares"
echo
for ((i=1; i<=100; i++)); do
exp=`expr $i \* $i`
echo "N: $i EXP: $exp"
done
Но на самом деле, в Баш, это будет более идиоматических:
#!/bin/bash
echo -e "Shows the numbers from 1 to 100 and their squares\n"
for ((i=1; i<=100; i++)); do
echo "N: $i EXP: $((i**2))"
done
Я надеваю 't получить ту же ошибку: я вижу 'bash: 1: команда не найдена',' bash: 4: команда не найдена', 'bash: 9: команда не найдена' и т. д., до' 10000: команда не найдена' - Какую версию bash вы используете? –
... теперь, вы * do * должны избавиться от пространства в присваивании 'exp =', или, лучше, замените его на нативную математику: 'exp = $ ((i * i))' –