Что вы написали в этой строке:
tempFile=`cut -c1 $1`
не создает файл с именем tempFile
. Следовательно, вы не можете читать по нему.
Вы можете изменить эту строку на:
cut -c1 "$1" > tempFile
И файл с именем tempFile
будет создан для цикла при чтении
для чтения. Не используйте $ tempFile
в этом цикле, поскольку переменная $ tempfile
имеет значение NULL (не существует). Используйте что-то вроде (no $):
done < tempFile
Однако простая команда cut -c1 "$ 1"
запишет все первые символы из исходного файла, просто выполните это, чтобы увидеть это:
cut -c1 "sourcefile"
Зная что вам не нужен tempFile для хранения значений, просто используйте здесь документ.
Использование документа here и устранение некоторых других проблем в вашем скрипте:
#!/bin/sh
echo "This is a script that analyses student data from input file $1"
echo "----------------------------------------------------------------------"
studentCount="$(wc -l < "$1" )"
while read n
do
echo "$n"
done <<-_avoid_a_file_
$(cut -c1 "$1")
_avoid_a_file_
echo "$studentCount is the number of students in the input file."
Хорошей практикой является использование she-bang (#!), Чтобы указать, какой интерпретатор должен запускать код. В этом случае я предположил, что вы хотите sh
из-за упоминания оболочки Борна
. Обратите внимание, что исходная оболочка Bourne довольно старая (~ 1979 г.) и что многие улучшения были добавлены в более поздние оболочки (ksh, bash, mksh, zsh и т. Д.).
Необходимо установить пакет openjfx
для поддержки приложений JavaFX. Также вам нужно будет установить такие библиотеки, как libopenjfx-java
, libopenjfx-jni
. Возможно, вам нужно будет добавить путь к CLASSPATH
export CLASSPATH=$CLASSPATH:/usr/share/java/openjfx/lib/
Другой способ обойти это:
openjfx
пакет jar
как:java --module-path /usr/share/openjfx/lib --add-modules=javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web -jar jarFile.jar