Как передать аргументы программе в цикле for сценария оболочки

#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 .

Я думаю, это решит вашу проблему.