У меня есть простой код:Каким образом выполняются параметрические условия?
compare()
{
n=$#
echo "Refference number: "
read x
while [ $n -gt 0 ]
do
if [ $1 -gt $x ]
then
echo "A greater number was found: " $1
fi
shift
done
}
Таким образом, сценарий не работает хорошо. Я получаю бесконечный цикл с ошибкой в строке while.
Если я заменяю это на линии while [ $# -gt 0 ]
, все работает нормально.
Почему это происходит? Isnt $ n = $ #? Я использую CentOS 7.
Какая ошибка вы получаете? – choroba
Вы, кажется, ожидаете, что расширение '$ n' будет оценено лениво. Технически это возможно с использованием арифметического контекста, но это будет довольно запутанный подход. Почему бы вам просто не обратиться к буквальному '$ #'? – kojiro
Мне просто нужна переменная, которая хранит $ #, и если бы я мог ее использовать, я сказал: «Почему бы и нет?». Я не понимаю, что вы сказали с ленивой оценкой. :/ – Marko