Giả sử kịch bản tôi đã sau: -Bash: Head & Tail hành vi với kịch bản bash
test.sh
#!/bin/bash
command1 #prints 5 lines
command2 #prints 3 lines
tôi chạy kịch bản với test.sh|head -n5
Điều gì sẽ xảy ra trong này trường hợp? Nó sẽ chạy cả hai lệnh? hoặc nó sẽ dừng lại sau khi command1? Nếu tôi gọi nó là -n1 thì sao?
Bối cảnh: Tôi có thể hỏi một câu hỏi rất cơ bản, nhưng tôi thực sự nhận thấy điều gì đó thú vị. Kịch bản của tôi (tập lệnh khác) đã xử lý 7.000 tệp và mỗi tệp tạo ra 1 dòng đầu ra. Phải mất 7 phút để chạy kịch bản hoàn toàn nhưng làm đầu -n1 đã cho tôi nhắc nhở ngay lập tức giống như kịch bản đã chấm dứt sau khi xử lý tập tin đầu tiên chỉ
Edit: Sau đây là kịch bản của tôi
for i in $(ls filepath);do
echo "$i" # issue here
python mySript "$i" > "/home/user/output/""$i"".out"
fi
done
Xóa echo ở trên cho phép tập lệnh chạy đầy đủ 7 phút với đầu -n1, nhưng với tiếng vọng nó chỉ in dòng đầu tiên rồi thoát.
Nó sẽ chạy toàn bộ lệnh và sau đó chỉ cần chuyển đầu ra tới đầu. Mọi thứ dường như hoạt động chính xác như nó cần, tôi không hiểu bạn đang hỏi gì? –
điều này có vẻ là hành vi của bash vì 'echo' là lệnh nội trang. thử thay đổi 'echo' thành'/bin/echo' và xem điều gì sẽ xảy ra. – ymonad
@ymonad Bạn nói đúng, bạn có thể xây dựng thêm về hành vi này không? – RedX