Command-Substitution
S-Lang shell (slsh):在變數中擷取命令輸出
在 slsh 中,我知道我必須使用 !-prefix 一個命令來執行它:
!ls
如何在變數中擷取其輸出?
我在文件中找不到任何關於直接執行此操作的方法,但您可以在
popen
.如果要將所有輸出抓取到字元串列表中,可以這樣做:
define grab_output (command) { variable fp, lines; fp = popen (command, "r"); if (fp == NULL) throw OpenError, "Failed to popen ($command)"; lines = fgetslines(fp); () = fclose (fp); return lines; }
如果您想在每一行到來時對其進行處理,那麼使用這樣的東西可能會更好:
define display_output (command) { variable fp, line; fp = popen (command, "r"); if (fp == NULL) throw OpenError, "Failed to popen ($command)"; foreach line (fp) using ("line") { printf("% 5d - %s", strlen(line), line); } () = fclose (fp); }
用法:
variable line; variable lines = grab_output("/usr/bin/cal"); foreach line (lines) { printf("stdout: %s", line); } display_output("cat t.sl");
警告:這只是從S-Lang 指南中的範例拼湊而成,我實際上並不了解該語言。