Tôi đang cố gắng gọi một tập lệnh bash từ tập lệnh TCL và cần thoát khỏi trạng thái thoát khỏi tập lệnh bash hoặc ít nhất là truyền lại tập lệnh TCL sao cho Tôi có thể biết liệu kịch bản của tôi có được thực hiện thành công hay không. Bất kỳ đề xuất?Gọi một tập lệnh bash từ tập lệnh tcl và trạng thái trở về và thoát
Trả lời
Xem http://wiki.tcl.tk/exec - nhấp vào nút "Hiển thị thảo luận" - có một ví dụ rất chi tiết về cách thực hiện chính xác những gì bạn đang yêu cầu. Những gì bạn cần mặc dù là catch
set status [catch {exec script.bash} output]
if {$status == 0} {
puts "script exited normally (exit status 0) and wrote nothing to stderr"
} elseif {$::errorCode eq "NONE"} {
puts "script exited normally (exit status 0) but wrote something to stderr which is in $output"
} elseif {[lindex $::errorCode 0] eq "CHILDSTATUS"} {
puts "script exited with status [lindex $::errorCode end]."
} else ...
Liên kết dứt khoát là một ví dụ từ tài liệu Tcl 8.6: http://www.tcl.tk/man/tcl8.6/TclCmd/exec.htm#M29 –
. tài liệu Tcl 8.5 có cùng ví dụ: http://www.tcl.tk/man/tcl8.5/TclCmd/exec.htm#M28 –
gì bạn muốn là exec kết quả trong số đó sẽ được tính vào giá trị lợi nhuận, được cảnh báo tuy nhiên có rất nhiều gotchas sử dụng exec, đặc biệt là nếu bạn cần phải làm bất cứ phức tạp trích dẫn
Đó là những gì tôi nghĩ nhưng dường như không nhận được bất cứ điều gì khi tôi cố gắng để lấy kết quả của exec của tôi. Tôi sẽ thử một cái gì đó như thế này: giá trị thiết lập [exec bash script.sh] và giá trị sẽ không chứa bất cứ điều gì bất kể tình trạng thoát kịch bản là gì? – tgai
Kinh nghiệm của tôi trong TCL còn hạn chế thỉnh thoảng dabbling. Tuy nhiên, các liên kết sau bắt đầu bằng câu trả lời của @ jk dẫn tôi đến số this page thảo luận về biến errorCode và những thứ liên quan có thể hữu ích trong trường hợp này. Dưới đây là một ví dụ nhanh thiệu việc sử dụng errorCode:
tcl:
set ret_val [catch { exec /bin/bash /path/to/bash_script }]
set errc $errorCode
set ret_val [lindex [split $errc " " ] 2]
puts $ret_val
bash_script, như tham chiếu ở trên:
#!/bin/bash
exit 42
dẫn đến sản lượng:
- 1. Truy xuất trạng thái thoát từ tập lệnh php bên trong tập lệnh shell
- 2. Bash - Thoát tập lệnh mẹ từ tập lệnh con
- 3. Cách chạy tập lệnh python từ tập lệnh python khác và nhận mã trạng thái trả về?
- 4. giá trị trạng thái trả về của tập lệnh shell khi được gọi từ ruby?
- 5. Cách đặt trạng thái thoát trong Tập lệnh Groovy
- 6. Capistrano & Bash: bỏ qua trạng thái thoát lệnh
- 7. Chạy tập lệnh bash từ tập lệnh R
- 8. trạng thái phát và thoát
- 9. Làm cách nào để chạy tập lệnh tcl trong tập lệnh tcl khác?
- 10. Tập lệnh PHP có thể bắt đầu một tập lệnh PHP khác và thoát không?
- 11. Fool python's os.isatty từ tập lệnh bash
- 12. Làm thế nào để chạy một lệnh trước khi một tập lệnh Bash thoát?
- 13. Ghi lại mã thoát cho tập lệnh từ xa?
- 14. Toàn bộ tập lệnh TCL hiện tại
- 15. Kiểm tra mã trạng thái FTP bằng tập lệnh PHP
- 16. mẫu lệnh trả về trạng thái
- 17. Bash - Thoát lệnh SSH
- 18. Xuất JSON từ tập lệnh Bash
- 19. Chạy tập lệnh bash từ Windows PowerShell
- 20. Thay đổi trạng thái Lync theo tập lệnh
- 21. nhận được đầu ra và thoát trạng thái từ shell_exec()
- 22. Làm cách nào để gửi tín hiệu SIGINT từ tập lệnh đến tập lệnh? BASH
- 23. JSP và tập lệnh nhỏ
- 24. Thoát tập lệnh lô từ bên trong một hàm
- 25. Làm cách nào để kiểm tra trạng thái thoát khác của lệnh trong Bash?
- 26. Trạng thái thoát QuickCheck về lỗi và tích hợp cabal
- 27. Tự xóa tập lệnh bash
- 28. Tập lệnh Bash tạo một mảng từ ls?
- 29. Tập lệnh Bash hoặc Bourne?
- 30. Thực hiện một tập lệnh bash khi tạo tập tin
Không rõ liệu bạn đang hỏi cách bẫy giá trị trả lại trong TCL hay cách trả lại trạng thái thoát khỏi bash. –
@Simon Hibbs: Lý tưởng nhất là tôi muốn nắm bắt trạng thái thoát khỏi tập lệnh bash của tôi trong tclsh. – tgai