2011-12-27 35 views
11

Tôi mới dùng Bash Script. Tôi chạy kịch bản đơn giản sau đây trong Ubuntu như thế này:Tập lệnh Bash không được hiểu bởi Ubuntu Bash

sudo bash -x Script.sh 

Output:

+ $'\r' 
: command not found 
+ $'\r' 
: command not found 
+ $'\r' 
: command not found 
+ adminEmail=$'[email protected]\r' 
+ $'\r' 
: command not found 
' echo 'database name: 
database name: 
+ read $'dbname\r' 

Các kịch bản thực tế:

#!/bin/bash 

# Installation script for latest Wordpress website on Ubuntu 
# 
# Kave 
# December 27, 2011 


adminEmail="[email protected]" 

echo "database name:" 
read dbname 

được tất cả những '\r' thông báo lỗi tới gì lên? Ngay cả các nhận xét dường như không được hiểu ...

+0

Dường như bạn có một vấn đề với kết thúc dòng, nhưng tôi không biết làm thế nào để sửa lỗi này ... – evotopid

+0

Nó làm việc cho tôi ... Arch Linux i686 – Paul

+1

Từ dòng lệnh làm 'dos2unix scriptname scriptname'. '\ r' là vận chuyển trả về, bạn có tạo tệp trên máy tính Windows và gửi nó lên linux không? –

Trả lời

10

Bạn đã tải xuống tệp qua máy Windows và bạn có các đầu cuối dòng CRLF (đó là \r\n trong C và các ngôn ngữ liên quan).

Xóa kết thúc dòng DOS. Ví dụ: chỉnh sửa tệp trong vim và thay đổi định dạng bằng :set fileformat=unix (cộng với Trả lại) và sau đó ghi lại tệp. Các kỹ thuật thay thế có thể sử dụng lệnh tr hoặc dos2unix hoặc dtou, tùy thuộc vào những gì có sẵn.

1

Cắt và dán mã của bạn từ trang này vào một trình soạn thảo trên Ubuntu của bạn, vì vậy bạn sẽ nhận được của bạn dòng kết thúc cố định (\r\n trên cửa sổ vs \n trên Linux chẳng hạn)

Nếu bạn lưu nó như là một tập tin mới Tôi chắc chắn nó sẽ hoạt động tốt.

1

Có vẻ như có một số ký tự không thể in không liên quan trong tệp.
Mở tập tin trong Vi/Vim:
báo chí [ESC] để có được vào chế độ lệnh
sau đó gõ :set list

+0

Và một khi bạn đã có các nhân vật được liệt kê, bạn sẽ loại bỏ chúng như thế nào? Chào mừng bạn đến với StackOverflow. Câu trả lời của bạn là rất nhiều trên các dòng bên phải, nhưng nó chưa hoàn thành. –

11

Đơn giản chỉ cần làm

dos2unix scriptname 

và thực hiện kịch bản của bạn.

Nếu bạn không có công cụ, bạn có thể thực hiện các thao tác sau để cài đặt.

sudo apt-get install dos2unix 

HOẶC

Do dòng lệnh sau hacks để chuyển đổi các tập tin.

tr -d '\015' <scriptname> scriptname.new 

HOẶC

sed -i 's/\x0D$//' scriptname 
+0

Rất cám ơn .... – Houman

Các vấn đề liên quan