2012-04-13 11 views
7

W moim skrypcie przechowuję lokalizację (ścieżkę) pliku jako zmienną.Zapisywanie katalogu jako zmiennej do późniejszego użycia w skrypcie linux

Na przykład fileA

Przykładem jego zawartość są

fileA =/usr/anotherfolder/somefold/"filenamehere"

Jednak kiedy zadzwonić do komendy na plik w skrypt takich jak:

kot $ fileA

lub

cat "$ fileA"

Wystąpił błąd informujący, że plik lub katalog nie istnieje. Jeśli wyświetlam echo $ fileA, aby zobaczyć, co jest wynikiem, a następnie uruchom ręcznie kota z terminala, działa dobrze, nie wiem, co dzieje się źle. Jakaś pomoc?

Niektóre informacje debugowania:

  • fileA = '/ home/Jacob/Pulpit/CS35L/PRACA/2/hw/test3/"nowy"'
  • echo „/ home/Jacob/Pulpit/CS35L/WORK/2/hw/test3/"new" ' /home/jacob/Desktop/CS35L/WORK/2/hw/test3/"new"
  • "[' '!" -r '/ home/Jacob/Pulpit/CS35L/PRACA/2/hw/test3/"nowy"' ']'

Dla tych konkretnych linii

Sprawdź czytelnym pliku

echo $fileA 
if [ ! -r "$fileA" ] 
then 
    o=`expr $o + 1` 
    echo "$fileA not readable." 
    continue  
fi 
+0

spróbuj "cat" $ fileA "'. Powodzenia. – shellter

+0

próbowałem tego, ale to nie zmieniło wyniku. – jsjwooowooo

+0

Czy '$ fileA' zawiera znaki specjalne? – kev

Odpowiedz

10

Jeśli nazwa pliku jest new (nie "new"), a następnie zmienić

fileA='/home/jacob/Desktop/CS35L/WORK/2/hw/test3/"new"' 

do

fileA=/home/jacob/Desktop/CS35L/WORK/2/hw/test3/new 
+0

Nie wierzę dodaję te apostrofów, żadnego pojęcia, jak się tam znalazły? Oni nie pokazują się na wyjściu echa? Myślałem, że to po prostu składnia wyjściowa debugowania. – jsjwooowooo

+0

@jsjwooowooo Nie rozumiem twoich informacji debugowania – kev

+0

Po prostu uruchomiłem skrypt za pomocą polecenia -xv i to zostało wygenerowane – jsjwooowooo

Powiązane problemy