bash — Tại sao tập lệnh shell thích hợp lại đưa ra thông báo lỗi bị bao bọc/cắt ngắn/bị hỏng?
In lạiTác giả: Walker 123Thời gian cập nhật: 29-11-2023 08:56:18274
Tôi có một tập lệnh shell với một lệnh có vẻ như sẽ hoạt động nhưng nó không thành công với thông báo lỗi bị bao bọc/cắt ngắn/hỏng kỳ lạ. Ví dụ:
$ ls -l myfile -rw-r----- 1 me me 0 Aug 7 12:36 myfile $ mèo myscript ls -l myfile $ bash myscript : Không có tập tin hoặc thư mục nào như vậy
Rõ ràng là tệp này tồn tại, nhưng ngay cả khi tôi không tồn tại thì đây là thông báo lỗi tôi thường nhận được:
$ ls -l tồn tại ngẫu nhiên ls: không thể truy cập idontexist: Không có tệp hoặc thư mục nào như vậy
Lưu ý cách nó chứa tên công cụ là, chuỗi tin nhắn và tên tệp, còn của tôi thì không.
Dưới đây là những gì tôi cố gắng sử dụng mysql kết quả thu được khi nào. Thông báo lỗi có vẻ như đã được gói lại và bây giờ bắt đầu bằng dấu ngoặc kép:
Lệnh: mysql -h myhost.example.com Dự kiến: LỖI 2005 (HY000): Máy chủ MySQL không xác định 'myhost.example.com' (0) Thực tế: ' (0) 2005 (HY000): Máy chủ MySQL không xác định 'myhost.example.com
Đây là lệnh ssh đơn giản của tôi, lệnh này sẽ hoạt động hoặc ít nhất đưa ra một thông báo lỗi bình thường, nhưng nó được gói để bắt đầu bằng dấu hai chấm và kết thúc bằng một lỗi kỳ lạ:
Lệnh: ssh myhost Dự kiến: ssh: Không thể giải quyết tên máy chủ myhost: Tên hoặc dịch vụ không xác định Thực tế: : Tên hoặc dịch vụ không được biết đến myhost
Tại sao điều này xảy ra và làm cách nào để khắc phục nó?
Tôi có một số tập lệnh và phần đầu tiên của chúng đều giống nhau. Chức năng của phần này là xác định tập lệnh đang chạy trên máy nào và đặt một số biến tương ứng. Nó trông như thế này: ENV=`echo $LOGNAME | cut -c1-8` if
Đây là những gì tôi đang cố gắng làm. Tôi có 4 tập lệnh shell. Tập lệnh 1 cần được chạy trước, sau đó là tập lệnh 2, rồi tập lệnh 3, rồi tập lệnh 4 và chúng phải được chạy theo thứ tự này. Tập lệnh 1 cần chạy (và đợi ở chế độ nền) để Tập lệnh 2 chạy bình thường, nhưng tập lệnh
Trong Snakemake, cách được khuyến nghị để thực thi nhiều lệnh bằng hàm shell() là gì? Câu trả lời hay nhất Bạn có thể gọi shell() nhiều lần trong khối quy tắc chạy (quy tắc có thể chỉ định run: thay vì shell: ): quy tắc chuyên nghiệp
Tôi có một tập lệnh shell mà tôi chuyển một số tham số. Test1.sh -a 1 -b 2 -c "one two three" Trong Test1.sh, tôi gọi một tập lệnh shell khác như sau. Test2.sh $* tôi
Tôi có 2 tập lệnh shell. Tập lệnh shell thứ hai chứa các hàm sau Second.sh func1 func2 First.sh sẽ gọi tập lệnh shell thứ hai với một số tham số và sẽ sử dụng một số tham số khác dành riêng cho hàm
Tôi có tập lệnh shell Unix test.sh. Trong tập lệnh, tôi muốn gọi một shell khác và sau đó từ shell con thực thi phần còn lại của các lệnh trong tập lệnh shell và thoát ra: test.sh #!/bin/b.
Tôi muốn thay đổi biến môi trường đường dẫn trong tập lệnh shell. Biến đường dẫn cần được sửa đổi sau khi tập lệnh shell được thực thi. Câu trả lời hay nhất Tôi biết hai cách để làm điều này. Đầu tiên là chạy tập lệnh trong ngữ cảnh của shell hiện tại: .
Tôi đang sử dụng vimshell để thực thi các lệnh trong vim nnoremap so với :VimShellPop Với sơ đồ bàn phím này, tôi có thể mở vim shell và thực thi các lệnh như "cài đặt gói" rồi gõ exi
Tôi muốn kết nối với các shell khác nhau (csh, ksh, v.v.) và thực thi các lệnh trong mỗi shell được chuyển đổi. Đây là một chương trình mẫu phản ánh ý định của tôi: #!/bin/bash echo $SHELL csh e
Tôi hiện đang cố gắng viết lại shell trong C bằng trình phân tích cú pháp BNF và LL. Mặt khác, tôi cần biết mức độ ưu tiên của các toán tử shell | , > , > , & , ; Cảm ơn bạn nhiều nhất
Thật không may, tôi không có lệnh tạm dừng (busybox/ash). Nhưng tôi có thể sử dụng kill -STOP $$ để trở về từ shell nền (sh &) về shell cha (và fg sau đó). Nhưng tôi không muốn vào
Tôi cần biết khi nào người dùng chuyển sang shell khác bằng cách nhấp vào nó. Tôi đã thử shellListener.shellDeactivated() nhưng sự kiện này được kích hoạt khi shell mất tập trung vào quyền kiểm soát của chính nó, điều đó có nghĩa là
Tôi đã thấy các vòng lặp giải nén tất cả các tệp zip trong một thư mục. Tuy nhiên, trước khi chạy cái này, tôi muốn đảm bảo rằng những gì tôi sắp chạy hoạt động bình thường: for i in dir; do cd $i; unzip '*.zip';
Tôi khá mới làm quen với lập trình, nhưng tôi muốn biết các trình soạn thảo văn bản shell như vim, emacs, nano, v.v. có thể điều khiển cửa sổ dòng lệnh như thế nào. Tôi chủ yếu là lập trình viên Windows, vì vậy nó có thể khác trên *nix. Theo tôi biết thì văn bản chỉ có thể là
Tôi có một tệp chứa ngày ở cột 7, yêu cầu của tôi là so sánh nó với ngày hôm nay và nếu nhỏ hơn thì xóa toàn bộ hàng. Ngoài ra, nếu bất kỳ ngày nào được đề cập trong cột 7 dài hơn 15 ngày thì hãy sửa đổi nó thành tối đa 15 ngày Ví dụ bên dưới- bây giờ
Tôi là một lập trình viên xuất sắc, rất giỏi!