nie można otworzyć `` do odczytu: Nie ma takiego pliku ani katalogu

0

Próbuję uruchomić plik .sh na RH6 i otrzymuję ten błąd ...

cannot open '' for reading: No such file or directory

Skrypt, który uruchamiam, wewnętrznie odwołuje się do innych skryptów znajdujących się w tym samym katalogu. Widzę ich za pomocą ls -la.

Uwaga: ten skrypt działa doskonale na RH4. Mam nową świeżą maszynę RH6, na której próbuję uruchomić moje skrypty.

Mój abc.shskrypt, jak wspomniano poniżej

. fox_comm_server_details.sh
. fox_comm_topic_names.sh
. fox_comm_sh_tools.sh

odnosi się do innych .shplików script ( ).

Kiedy uruchamiam abc.sh (z ./abc.sh), mówi

fox_comm_server_details.sh: cannot open [No such file or directory]

Potwierdziłem, że wymagane skrypty są obecne w katalogu i mam do nich uprawnienia. Jeśli zaktualizuję abc.shjak poniżej ...

. ./fox_comm_server_details.sh
. ./fox_comm_topic_names.sh
. ./fox_comm_sh_tools.sh

Tym razem nie narzeka na brakujące pliki, ale na inny błąd, jak wspomniano poniżej ...

read_fox_comm_servers_list[134]: read_fox_comm_servers_list_defaults[37]: local: not found [No such file or directory]

read_fox_comm_servers_listi read_fox_comm_servers_list_defaultssą funkcjami, które są zdefiniowane w fox_comm_sh_tools.shnastępujący sposób ...

function read_fox_comm_servers_list
{
        read_fox_comm_servers_list_defaults
        read_fox_comm_servers_list_overrides
}

function read_fox_comm_servers_list_defaults
{
        local tempfile=/tmp/read_fox_comm_servers_list_defaults.$$
}

i uzyskanie wyżej wymienionego błędu.

user417090
źródło
3
Proszę edytować swoje pytanie to skrypt, który próbujesz uruchomić.
DavidPostill
I podaj wynik polecenia ls -l. Czy również czytasz uprawnienia do skryptu? Nie mogą pracować bez tego pozwolenia
Romeo Ninov
Co to jest 1. linia skryptu. Jeśli tak #!/bin/sh, to czy wiesz, co /bin/sh jest w twoim systemie (np. Czy to bash czy dash)? ... Myślę, że 134i 37w komunikacie błędu (-ów) są numery linii. Prawdopodobnie masz rację, nie rzucając na nas całego skryptu 135+, ale czy próbowałeś usunąć wiersze ze skryptu (działającej, debugowanej) skryptu, dopóki błąd nie zniknie? Spróbuj tego - ostatnia rzecz, którą usunąłeś, prawdopodobnie będzie dużą wskazówką dotyczącą problemu.
G-Man,

Odpowiedzi:

0

Strzał w ciemność: edytuj swoje pytanie, klikając ten link, ponieważ jest to naprawdę trudne do zrozumienia.

Ogólnie wydaje się, że gdzieś w skrypcie (lub w indeksie dolnym) zmienna nie jest ustawiona z nazwą pliku.
Możesz zauważyć ''bez nazwy w komunikacie o błędzie

nie można otworzyć '' do odczytu: nie ma takiego pliku ani katalogu

Możesz wyszukać, gdzie jest błąd aktywujący debugowanie w twojej powłoce

set -x           # to activate debugging  
./myscript.sh    # here your script invocation  
set +x           # to stop debugging 
Hastur
źródło
1
To nie zadziała. Opcje powłoki (np. Xtrace lub -xw skrócie) nie są przekazywane z rodzica na dziecko, więc będzie to oznaczać tylko, że użytkownik działa myscript.sh, ale nie to, co dzieje się w skrypcie. W tym celu potrzebujesz jednego z poniższych: (1) set -x; . myscript.sh; set +x(prawdopodobnie nie jest to dobry pomysł), (2) (set -x; . myscript.sh)(zwróć uwagę na nawiasy), (3) sh -x myscript.shlub (4) edytuj myscript.shi dołącz -xdo linii she-bang ( #!/bin/shna pierwsza linia).
G-Man,