Из руководства fstab
по моей системе:
Четвертое поле,
fs_mntops
, описывает параметры монтирования, связанные с файловой системой. Он отформатирован как список параметров, разделенных запятыми. Он содержит как минимум тип монтирования (см.fs_type
ниже) плюс любые дополнительные параметры, соответствующие типу файловой системы. [...]Если
fs_type
равно «rw», «rq»,или "ро" то файловая система, имя которой указано в полеfs_file
, обычно смонтирован для чтения-записи или только для чтения в указанном специальном файле. Еслиfs_type
— «sw», тогда специальный файл становится доступным как часть пространство подкачки с помощью командыswapon(8)
в конце перезагрузки системы процедура.
Таким образом, sw
используется, чтобы сообщить swapon
(или swapctl
в моей системе), что это допустимый кандидат для использования в качестве пространства подкачки, которое будет быть добавлены как часть процедуры запуска системы.
Из руководства, описывающего swapctl -A
:
Эта опция заставляет
swapctl
читать файл/etc/fstab
для устройств и файлы с типом «sw» и добавляет все эти записи в качестве устройств подкачки. Если устройства подкачки не настроены,swapctl
завершится с кодом ошибки.
Это в OpenBSD. В системе Ubuntu Linux, к которой у меня есть доступ, ни в одном руководстве не упоминается sw
как вариант монтирования для подкачки по какой-то причине.
Вы должны предоставить немного больше информации, например, содержимое файла, на который указывает $tempFile. Тогда я смог бы помочь больше.
cat $tempFile|while read line
do
sum=0
count=0
average=0
median=0
#read each line, sort it and put it into tempRows file
echo "$line" >> $tempRow
sort $tempRow
#add each number to the sum for avg calculation
for i in $(cat $tempRow)
do
count+=1
echo "count: $count"
sum+=$i
echo "sum: $sum"
done
#perform and print average calc at the end of each line
average=$((sum / count))
echo "$average"
rm -f $tempRow
done
Запустите bash -x myscript
. Это даст вам трассировку выполнения, которая должна прояснить проблемы.
Ваша основная проблема заключается в том, что
for i in $tempRow
Переменная $tempRow
содержит имя файла. Если предположить, что имя файла не содержит пробелов или символов подстановки, то $tempRow
расширяется до списка из одного слова, которое является именем файла. Таким образом, тело цикла for выполняется один раз, при этом i
устанавливается на имя файла.
Похоже, что вы хотите перебирать строки файла. Для этого используйте while read
. Или, скорее, while IFS= read -r i; do ...
.
Несколько дополнительных советов:
expr
. Сейчас 21 век, все оболочки имеют встроенную арифметику. count=$((count + 1))
и т.д.