Прежде всего проверьте доступные устройства хранения с помощью следующей команды:
lsblk
Вы можете определить файловую систему с помощью опции -f:
lsblk -f
Определите запоминающее устройство, соответствующее вашей Windows.
Создайте каталог для доступа к содержимому раздела или диска Windows:
sudo mkdir /media/windows
Затем вы должны смонтировать раздел, выполнив что-то похожее на следующее:
sudo mount /dev/sda3 /media/windows
Где sda3 — это раздел, который в вашем случае может быть другим, а /media/windows — это точка монтирования, которую мы только что создали.
Если вы столкнулись с проблемой, попробуйте использовать явные параметры:
Сначала вам нужно подтвердить свой идентификатор с помощью команды id:
id
Тогда можно было бы сделать что-то вроде:
sudo mount -t ntfs-3g -o uid=1000,gid=1000,dmask=002,fmask=111 /dev/sda3 /media/windows
Это временное решение. Если вы хотите автоматически монтировать вашу файловую систему при загрузке системы, вы должны изменить файл:
/etc/fstab
Если вы используете графический интерфейс, вы также можете попробовать выбрать раздел в файловом менеджере.
Есть несколько проблем с вашим кодом.
awk
программа заключена в одинарные кавычки (, что рекомендуется ), расширения параметров оболочки не происходит, и ваше выражение print $[i]
не будет работать. См. этот исчерпывающий вопрос и ответ на StackOverflow о том, как использовать параметр оболочки в awk
программах. awk
, номер которого хранится в переменной(awk
)n
, будет адресоваться через $n
, а не $[n]
. val1
значение val4
, но фактически никогда их не используете, поэтому первая часть вашего примера скрипта ничего не делает. ${val[i]}
, а не $val[i]
(, что напечатает содержимое переменной$val
-пустую строку -, за которой следует фиксированная строка[i]
). Есть также несколько неэффективных действий, таких как повторный вызов awk
и (, насколько я могу судить )неспособность решить проблему ведущего Thread
в вашем примере ввода при использовании только /
в качестве разделителя полей.
Чтобы устранить эти проблемы и поскольку соответствующие значения в вашем примере не содержат пробелов, попробуйте следующее:
#!/bin/bash
val=( $(awk '/^Thread/{n=split($2,a,/\//); for (i=1;i<=n;i++) printf("%s%s",a[i],OFS)}' Threadout.txt) )
for i in ${!val[@]}
do
echo "${val[i]}"
done
awk
разделит второе «поле» строки Thread 1/1/25/100
, а именно часть 1/1/25/100
в /
на массив a
и напечатает все элементы массива, разделенные символом OFS
(, который по умолчанию равен пробелу ). awk
программы и -, поскольку это список токенов, -разделенных пробелами, -назначит отдельные токены переменной массива val
через val=( ... )
утверждение. Вы можете прочитать о массивах bash немного подробнее в GNU Bash Reference Manual или GreyCat&Lhunath's Bash Guide . Я бы также рекомендовал вам взглянуть на shellcheck для отладки сценариев оболочки.