我正在嘗試使用cmd最小化文件。代碼:func minify(path string) { if exists(path) { fmt.Println("File exist") } else { fmt.Println("File NOT exist") } cmdStr := `sed ':a;N;$!ba;s/\\n//g' ` + path + " > " + path fmt.Println(cmdStr) cmd := exec.Command(cmdStr) if err := cmd.Run(); err != nil { log.Fatal(err) }}func exists(name string) bool { if _, err := os.Stat(name); err != nil { if os.IsNotExist(err) { return false } } return true}函數 exist() 驗證文件是否存在:2021/04/20 14:14:53 /media/peter/Elements/Code/free-quotes.info/ubuntu/aws/Go/views/500.min.htmlFile exist但是當嘗試運行命令時sed ':a;N;$!ba;s/\\n//g' /media/peter/Elements/Code/free-quotes.info/ubuntu/aws/Go/views/500.min.html > /media/peter/Elements/Code/free-quotes.info/ubuntu/aws/Go/views/500.min.html我得到no such file or directory根據我嘗試過的以下反饋func minify(oldPath string, newPath string) { cmd := exec.Command("sed", ":a;N;$!ba;s/\n//g", oldPath, ">", newPath) if err := cmd.Run(); err != nil { fmt.Println(whereami.WhereAmI(), err) }}但現在我得到:File: main.go Function: main.minify Line: 91 exit status 1
2 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
如果要刪除所有換行符,可以直接使用 Go:
package main
import (
"bytes"
"os"
)
func main() {
b, e := os.ReadFile("file.txt")
if e != nil {
panic(e)
}
b = bytes.ReplaceAll(b, []byte{'\n'}, nil)
println(string(b))
}
https://golang.org/pkg/bytes#ReplaceAll

函數式編程
TA貢獻1807條經驗 獲得超9個贊
您正在將包括路徑和參數在內的所有部分傳遞到一個參數中。但是,當您查看命令函數時,它需要路徑和參數,如以下文檔中所述。https://golang.org/pkg/os/exec/#Command
所以我相信你應該像下面這樣編輯你的代碼;執行。命令(“sed”, “:a;N;$!ba;s/\n//g“, fPath1, ”>“, fPath2)
- 2 回答
- 0 關注
- 211 瀏覽
添加回答
舉報
0/150
提交
取消