package main import ( "fmt" "os" "strconv" ) // 显示job列表 func cmd_jobs(fields []string, stdin *os.File, stdout *os.File, stderr *os.File) { if len(fields) == 1 { // 如果没有参数 for i, job := range jobs { // 则输出所有job fmt.Fprintf(stdout, "[%d] %d %s\t%s\n", i, job.cmd.Process.Pid, job.state, job.work) } } else { for _, jid := range fields[1:] { // 遍历参数 id, err := strconv.Atoi(jid[1:]) // 字符串转数字 if err != nil { panic("jobs: job not found: " + jid) } _, ok := jobs[id] // 是否有指定编号的job if !ok { panic("jobs: %" + jid[1:] + ": no such job") } fmt.Fprintf(stdout, "[%d] %d %s\t%s\n", id, jobs[id].cmd.Process.Pid, jobs[id].state, jobs[id].work) } } }