Вы можете использовать ping (1)(использует ICMP ECHO REQUEST/REPLY ). Если вы подозреваете, что какой-то брандмауэр может мешать, traceroute (8 )покажет путь к месту назначения (tcptraceroute (8 )— удобная оболочка здесь ). Вы можете указать, какой протокол и порт использовать, а также множество экзотических опций.
Можно было бы с оболочкой bash
. source
может предоставить аргумент файлу.
Это означает, что вы можете построить foo.sh как:
#!/bin/bash
echo "Hello from $1"
и bar.sh как
#!/bin/bash
source ~/Codes/tests/foo.sh '~/bar.sh'
в итоге baz.sh будет выглядеть вот так:
#!/bin/bash
source ~/Codes/tests/foo.sh '~/baz.sh'
Если вас волнует то, как был вызван скрипт, вы также можете написать foo.sh как
#!/bin/bash
echo "Hello from $0"
и bar.sh как
#!/bin/bash
source ~/Codes/tests/foo.sh
Это даст Hello from./bar.sh
, если вы вызовете его из каталога скриптов. Если вы вызовете его из своего дома, вы получитеHello from ~/bar.sh
Это bash
решение (для скриптов с #!/bin/bash
в качестве первой строки или запуска сbash script...
).
Настройте пример (два сценария, a.sh
иb.sh
):
cat >a.sh <<'x' && chmod a+x a.sh
#!/bin/bash
echo This is a.sh
source b.sh
echo End a.sh
x
cat >b.sh <<'x' && chmod a+x b.sh
#!/bin/bash
echo This is b.sh
echo "BASH_SOURCE=(${BASH_SOURCE[@]}) and we are '${BASH_SOURCE[0]}' called by '${BASH_SOURCE[1]}'"
echo End b.sh
x
Теперь запустите код и просмотрите вывод:
./a.sh
This is a.sh
This is b.sh
BASH_SOURCE=(b.sh./a.sh) and we are 'b.sh' called by './a.sh'
End b.sh
End a.sh
Как видите, в файле source
d вызывающий абонент может быть идентифицирован с помощью "${BASH_SOURCE[1]}"
.