Czy istnieje sposób na wyświetlenie / pokazanie / wydrukowanie kodu źródłowego skryptu bash wraz z jego dołączeniami (znanymi również jako „źródła „)?
Na przykład:
plik sub.sh
function showMe(){ echo "INCLUDE" }
Plik main.sh
#!/bin/bash source sub.sh showMe echo "OK"
„print” pliku main.sh pokaże:
#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK"
Komentarze
Odpowiedź
Możesz spróbować śledzić awk
:
awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh
więc każdy wiersz zaczynający się od source fname
należy zastąpić treścią plik, jeśli istnieje.
Odpowiedź
perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh
Komentarze
- Działa świetnie .. ale nie mogę ' używać perla, tak przy okazji, dziękuję.
- wstaw
echo "source foo.sh for the rescue"
wfoo.sh
i otrzymujesz pętlę nieskończoności 🙂 - @EvgenyVereshchagin, jesteś bardzo okrutny! 🙂
Odpowiedź
Jeśli nie masz nic przeciwko wykonaniu skryptu, oto prosty sposób wyświetlić kod źródłowy i jego zawartość:
bash -v foo.sh
Komentarze
- To polecenie analizuje również potrzebuję tylko źródła, dziękuję.
more/less/cat
, w czasie wykonywania możesz użyć flagi -x (np.set -x
). Nie ma takiej magii, która statycznie wypisze kod źródłowy wydruku i dołączony plik. Brak odpowiednikacpp
dla języka C.