Saya punya skrip bash postCloneSetup.sh:
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd "$script_path"
printf 'Updating submodules for project\r\n'
git submodule update --init --recursive
printf '\r\nInitializing git hooks\n'
./GitHooks-BackEnd/init-hooks
printf '\r\nInitializing Submodule1\r\n'
$(./Submodule1/postCloneSetup.sh)
printf '\r\nInitializing Submodule2\r\n'
$(./Submodule2/postCloneSetup.sh)
Saya memicu skrip bash dari command prompt Windows.
postCloneSetup.sh
Ini membuka jendela lain dan kemudian kembali. Jendela yang dimunculkannya tetap terbuka dan mencatat teks keluaran.
Saya ingin menangkap output dari jendela spawned (teks yang ditulis ke konsol) dan mengembalikannya ke command prompt Windows.
Saya lebih suka menggunakan sesuatu seperti
$(postCloneSetup.sh) // Linux for capturing output to current context
untuk prompt perintah Windows.
Saya lebih suka tidak mengubah postCloneSetup.sh. Saya tahu saya bisa membuatnya menulis ke file dengan
exec &> postCloneSetupLog.log
tapi kemudian saya harus menunggu dan menjalankannya secara manual
type postCloneSetupLog.log
untuk melihat output di konsol. Ini tidak mungkin untuk diintegrasikan ke dalam mesin CI, yang merupakan tujuan saya.
Bagaimana saya bisa menangkap output dari konsol yang dihasilkan dalam satu perintah?
postCloneSetup.sh
, tetapi "skrip" lainnya hanya menjalankannya dari command prompt Windows. Di mesin CI itulah yang terjadi.