Bạn đúng khi bạn nói bạn "không sử dụng đúng chuẩn". Trong thực tế, từ đoạn mã script bạn đã cung cấp, tập lệnh của bạn giả định bạn đang nhận các tệp dưới dạng đối số trên dòng lệnh ... bạn không sử dụng stdin chút nào!
Ở góc trên cùng bên phải của hành động Run Shell Script, bên dưới X là hộp thả xuống có 2 tùy chọn: 'Nhập đầu vào: vào stdin' và 'Pass intput: as arguments'. Các tùy chọn này quyết định cách các tệp đã chọn được chuyển đến hành động tập lệnh của bạn. Nếu tùy chọn 'làm đối số' được chọn, tập lệnh của bạn nên sử dụng mẫu sau
for f in "[email protected]"; do
# so stuff here
done
Mẫu này được cung cấp bởi chính hành động khi 'làm đối số' được chọn.
Mặt khác, nếu tùy chọn 'để stdin' được chọn, sau đó bạn nên sử dụng kịch bản tamplate này:
while read fname; do # read each line - assumes one file name per line
# do clever stuff with the filename
echo $fname # to illustrate we'll simply copy the filename to stdout
done
(Trong trường hợp bạn không biết bash kịch bản, tất cả mọi thứ sau khi # trên một đường thẳng là một bình luận)
Lưu ý rằng các mẫu được cung cấp bởi các hành động kịch bản là đơn giản, đơn lệnh
cat
Không rất hữu ích trong quan điểm của tôi. Lưu ý rằng cho đến khi bạn thực sự nhập văn bản vào vùng tập lệnh, thay đổi giữa 'thành stdin' và 'làm đối số' sẽ thay đổi nội dung của hộp tập lệnh (tôi cho rằng đây là gợi ý cho kịch bản của bạn sẽ trông như thế nào) nhưng một khi bạn nhập một cái gì đó, việc chuyển đổi không còn xảy ra nữa.