cuốn sách gpt4 ai đã làm

Toán tử/toán hạng Linux không mong muốn khi kiểm tra tệp

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:38:28 27 4
mua khóa gpt4 Nike

Tôi đã sử dụng tập lệnh ksh đơn giản sau đây trong Linux

#!/bin/ksh
đặt -x
### Danh sách tiến trình của file *.dat
nếu [ -f *.dat ]
sau đó
in "sắp xử lý"
khác
in "không có tập tin để xử lý"
fi

Tôi có các tệp *.dat sau trong thư mục hiện tại của mình:

S3ASBN.1708140015551.dat S3ASBN.1708140015552.dat S3ASBN.1708140015561.dat S3HDR.dat 

Lệnh chạy file hiển thị như sau:

tập tin *.dat
S3ASBN.1708140015551.dat: Văn bản ASCII
S3ASBN.1708140015552.dat: Văn bản ASCII
S3ASBN.1708140015561.dat: Văn bản ASCII
S3HDR.dat: văn bản ASCII

Tuy nhiên, khi tôi chạy tập lệnh ksh, nó hiển thị như sau:

 ./Bài kiểm tra
+ [ -f S3ASBN.1708140015551.dat S3ASBN.1708140015552.dat S3ASBN.1708140015561.dat S3HDR.dat ]
./test[9]: [: S3ASBN.1708140015552.dat: toán tử/toán hạng không mong muốn
+ in không có tập tin để xử lý
không có tập tin để xử lý

tôi hiểuToán tử/toán hạng không mong đợiBất kỳ manh mối nào và biện pháp khắc phục là gì?

câu trả lời hay nhất

Câu lệnh if của bạn không chính xác: bạn đang kiểm tra xem *.dat có phải là một tệp hay không.
问题是:*.dat Có một toán tử toàn cầu *, được tạo bằng .dat Danh sách kết thúc với mỗi mục.
Thử nghiệm này chỉ chạy một lần và bạn có nhiều tệp, vì vậy cần phải chạy nhiều thử nghiệm.

Hãy thử thêm một vòng lặp:

#!/usr/bin/ksh
đặt -x
### Danh sách tiến trình của file *.dat
cho tập tin ở dạng *.dat
do
nếu [ -f $ tập tin ]
sau đó
in "sắp xử lý"
khác
in "không có tập tin để xử lý"
fi
xong

Lấy tôi làm ví dụ:

$>ls*.dat
53.dat fds.dat ko.dat tfd.dat

Đầu ra:

$> ./tutu.sh 
+ [ -f 53.dat ]
+ in 'sắp xử lý'
sắp xử lý
+ [ -f fds.dat ]
+ in 'sắp xử lý'
sắp xử lý
+ [ -f ko.dat ]
+ in 'sắp xử lý'
sắp xử lý
+ [ -f tfd.dat ]
+ in 'sắp xử lý'
sắp xử lý

Về các toán tử/toán hạng không mong muốn của Linux khi kiểm tra tệp, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/45710033/

27 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress