В следующем коде возникает проблема при инкапсуляции блока кода с помощью функции. Сообщение об ошибке $1: ambigious redirect" is displayed.
bash shell script error: ambigious redirect
Цикл while
считывает текст из файла input.txt
построчно и сохраняет его в массиве linesArray
.
Цикл for
в цикле «while» выполняет итерацию по всем элементам массива linesArray
с индексом 0, а затем выполняет оператор case, который сравнивает элементы массива с действительными операторами mips.
function mnemonicCheck {
while read line; do
linesArray=($line)
for e in ${linesArray[0]}
do
case $e in
"add")
;;
"sub")
;;
"addi")
;;
"lw")
;;
"sw")
;;
*)
echo "invalid operator used. Valid operators are: add,sub,addi,lw,sw"
;;
esac
done
done < $1
}
#calling methods
checkArguments $1 $2 $3
mnemonicCheck
$ 1 относится к аргументу для цикла while, который читает текст файла. – user2037720
@ user2037720: Нет, это не так. Цикл while не имеет аргументов. $ 1 всегда означает первый аргумент функции/скрипта. – rici
@ user2037720: Если вы имели в виду, что '$ 1' используется для перенаправления stdin для цикла while, вы были бы правы. Но откуда он получает ценность? – rici