Học Bash · 24/06/2021 0

Tự viết tool dos2unix, fix lỗi : line 2: $’\r’: command not found

Trong trường hợp một file *sh được viết trên hđh windows, rồi sau đó được chạy trên linux, rất có thể bạn sẽ bị lỗi như sau:
: line 2: $'\r': command not found

Điều này xảy ra là do trên windows sử dụng 2 kí tự \r\n để xuống dòng, trong khi linux chỉ sử dụng \n làm ký tự xuống dòng.
Vậy để fix lỗi chỉ cần đơn giản là bỏ đi các kí từ \r trong file đi. Việc này có thể thực hiện được bằng sed.

sed -i 's#\r##g' your-script-file.sh

Để dễ nhớ bạn viết thành 1 file script đơn giản như sau:
File: dos2unix.sh

#!/bin/bash

sed -i 's#\r##g' $@

rồi bạn gõ lệnh:

dos2unix.sh your-script-file .sh

Vậy là xong.