/* Simple 'echo' implementation. */ package main import ( "flag" "fmt" "strings" ) func main() { newLineFlagPtr := flag.Bool("n", false, "Don't add new line character('-N' is lower priority).") newLineStrPtr := flag.String("N", "\n", "Use this instead new line character.") joinStrsFlagPtr := flag.Bool("j", false, "Join strings('-J' is lower priority).") joinStrPtr := flag.String("J", " ", "Use instead of space as separator.") backslashSeqFlagPtr := flag.Bool("e", false, "Interpret backslash special terminal characters.") flag.Parse() if *newLineFlagPtr { *newLineStrPtr = "" } if *joinStrsFlagPtr { *joinStrPtr = "" } printStr := strings.Join(flag.Args(), *joinStrPtr) if *backslashSeqFlagPtr { seqs := map[string] string { "\\\\" : "\\", "\\a" : "\a", "\\b" : "\b", /*"\\c" : "\c", "\\e" : "\e",*/ "\\f" : "\f", "\\n" : "\n", "\\r" : "\r", "\\t" : "\t", "\\v" : "\v", } for k, v := range seqs { printStr = strings.ReplaceAll(printStr, k, v) } } fmt.Printf("%s%s", printStr, *newLineStrPtr,) }