#bash #shell #for-loop #arguments
#bash #оболочка #цикл for #аргументы
Вопрос:
У меня возникли небольшие проблемы с реализацией очень простого сценария оболочки. Я хочу запустить программу с вводами командной строки 2-100 в качестве одного из аргументов программы и направить результаты в другой файл, т.Е.
for (( c=2; c<101; c ))
do
./virtmem 100 $c fifo sort2 >> results/FIFOSORT.txt
done
Но это не совсем работает, потому что в нем говорится, что fifo не является программой. Есть предложения? Спасибо за вашу помощь.
Комментарии:
1. Я бы послушал его, если он думает, что «fifo» не является программой, тогда он думает, что «fifo» не является программой. То есть, что произойдет, если заменить $ c константой, скажем, 2 (которая, как было сказано, действительна в другом комментарии). Я подозреваю, что это будет та же ошибка, из-за которой использование переменной будет отвлекающим маневром.
2. Было бы полезно, если бы вы вставили точный вывод из командной строки. Мне кажется, это внутренняя
virtmem
проблема.3. Спасибо pst и bacchus, virtmem нужно было перекомпилировать, а кавычки нужно было поместить в fifo и sort2. Ни один из них не сработал в одиночку, огромное спасибо.
Ответ №1:
Что virtmem делает с этими аргументами? Если он пытается запустить «fifo» как другой скрипт, возможно, fifo нужен «chmod x», чтобы сделать его исполняемым?
Комментарии:
1. Virtmem — это программа, которая принимает два целых числа и две строки в качестве аргумента. Первое целое число всегда должно быть 100, в то время как второе должно варьироваться от 2-100, и результаты должны быть записаны. Fifo и sort2 — это всего лишь два последних аргумента программы, а не другие сценарии. Это эмулятор виртуальной памяти, в котором первое целое число соответствует количеству страниц, а второе — количеству кадров. Две строки — это алгоритм замены и тестовая функция.
Ответ №2:
Попробуйте либо сделать это
`./virtmem 100 $c fifo sort2 >> results/FIFOSORT.txt
`
или это
./virtmem 100 $c "fifo" "sort2" >> results/FIFOSORT.txt
.
Я думаю, это решит вашу проблему.