2016-12-03 5 views
0

Вот мой сценарий:проверить выход другого сценария из сценария

#!/bin/bash 

path=$1 

if [[ ./first.sh "$path" == "0" ]] 
    echo "0" 
fi 

Сценарий «first.sh» печатает число с помощью эхо. Теперь во втором скрипте я хочу проверить, был ли вывод первого скрипта «0», и если да, напечатайте «0»

Что я делаю неправильно?

ответ

1

Если вы хотите прочитать результат выполнения команды/сценария в оболочке, оберните ее в $(). Например, variable=$(ls "$path") считывает вывод ls для заданного пути в variable.

Применяя это к вашей проблеме

#!/bin/bash 

path=$1 
output=$(./first.sh "$path") 
if [[ "$output" == "0" ]]; then 
    echo "0" 
fi 

Пожалуйста, обратите внимание, что я также удалены некоторые ошибки (использование ; then после, если заявление).

+0

спасибо! возможно ли сделать что-то вроде этого: 'if [[$ (ls -d * /" $ path ") =" "]]; то?? я хочу проверить, нет ли в пути нет подкаталогов –

+0

i означает '==' конечно –

+0

Если вы хотите посмотреть, есть ли подкаталоги, вы можете использовать find. Это очень полезная утилита (проверьте http://man7.org/linux/man-pages/man1/find.1.html). 'find" $ path "-maxdepth 0 -type d | wc -l' даст вам количество подкаталогов. Это должно быть 1 в случае, если оно пустое, потому что для пустых директорий будет возвращено только '.'. – CDe

Смежные вопросы