Otrzymałem plik zip ze strukturą folderów zawierającą nawiasy. Przeszedłem dwa procesy w cli i teraz łączę je w skrypt
Najpierw przeszukuje strukturę plików w poszukiwaniu określonych plików poprawiających nawiasy, a następnie potoki do tshark w celu przetworzenia. moje wyjście z użyciem sed działa na stoud, ale rekin fajki nie lubi ścieżki, którą rzucam.
find <path> -iname *.cap |sed 's/(/\\(/' |sed 's/)/\\)/'
zabiera folder / folder (opis) /file.cap powoduje, że folder / folder (opis) /file.cap jest cool!
kiedy dodam to do skryptu bash
#/BIN/BASH
capfiles=($(find <path> -iname *.cap | sed ’s/(/\\(/‘ |sed ’s/)/\\)/‘))
for i in “${capfiles[@]}”;do
tshark -r $i -T fields -e dns.qry.name |sort u > $i.uniquefqdns2lookup.txt
done
dostaję
'tshark: The file "folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file folder/folder\(description\)/file.cap" doesn't exist.
Próbowałem grać z ./ w łatce jako wyraźna postać bez powodzenia. to wyjście wygląda następująco:
'tshark: The file "./"folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file "./folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file "./folder/folder\(description\)/file.cap" doesn't exist.
czego mi brakuje? Czy jestem całkowicie z tego powodu?
#/BIN/BASH
na#!/bin/bash
.Odpowiedzi:
Oprócz komentarza KasiyA,
sed
wzory są wyświetlane kończąc się na cudzysłów (`), a nie na cudzysłów ('). Nie wiem, czy tak jest w twoim skrypcie.$i
podwójne cudzysłowy ("$i"
) (zobacz tę odpowiedź ).W zależności od ustawień tshark możesz nie potrzebować odwrotnych ukośników. Użycie
"$i"
spowoduje zachowanie nawiasów w nazwie pliku. Tshark prawdopodobnie szuka pliku z literałem\
w nazwie. Próbowaći zobacz co dostajesz.
źródło