Điểm:3

không thể thêm lối ra vào vòng lặp này

lá cờ ag

Tuy nhiên, đã tìm thấy tập lệnh thú vị vẽ tuyết bên trong thiết bị đầu cuối của bạn.... Tôi muốn có tùy chọn nhập 'q' bất kỳ lúc nào để thoát khỏi vòng lặp. Đây là những gì tôi có;

 

 LINES=$(tput dòng)
COLUMNS=$(tput cols)
 
tuyên bố -Một bông tuyết
khai báo -A lastflakes
 
xa lạ

hàm move_flake() {    

i="$1"
 
nếu [ "${bông tuyết[$i]}" = "" ] || [ "${bông tuyết[$i]}" = "$LINES" ]; sau đó
bông tuyết[$i]=0
khác
nếu [ "${lastflakes[$i]}" != "" ]; sau đó
printf "\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i
fi
fi
 
printf "\033[%s;%sH*\033[1;1H" ${snowflakes[$i]} $i
 
lastflakes[$i]=${snowflakes[$i]}
bông tuyết[$i]=$((${snowflakes[$i]}+1))
}
 
trong khi :
làm
    
i=$(($RANDOM % $COLUMNS))
 
move_flake $i

cho x trong "${!lastflakes[@]}"
làm
move_flake "$x"
xong
 
ngủ 0,1
xong

đây là tôi đã cố gắng thêm vào;

echo "Gõ 'q' để thoát"
trong khi đọc -n1 -r -p "muốn thoát tập lệnh?"
làm
    nếu [[ $REPLY == q ]];
    sau đó
        nghỉ;
    khác
        #sao cũng được
    fi
xong

đã thêm nó vào bên trong hàm, nhưng chỉ yêu cầu 'q' ngay từ đầu. sau đó đã cố gắng thêm tập lệnh thực tế bên trong vòng lặp thoát và chỉ vẽ một bông tuyết rồi hỏi lại xem tôi có muốn thoát không.... Bất kỳ ý tưởng làm thế nào để làm cho công việc này?

terdon avatar
lá cờ cn
Tại sao bạn không sử dụng Ctrl + C để thoát?
Điểm:5
lá cờ jp

Bạn có thể làm như thế này trong vỏ đánh đập: Thay thế cái ngủ lệnh với một đọc lệnh có thời gian chờ và để trong khi kiểm tra cho bạn 'q'. Nhìn thấy

giúp đọc | ít hơn

Đây là phiên bản trình diễn tuyết của tôi,

#!/bin/bash

LINES=$(tput dòng)
COLUMNS=$(tput cols)

tuyên bố -Một bông tuyết
khai báo -A lastflakes
 
xa lạ

hàm move_flake() {    

i="$1"
 
nếu [ "${bông tuyết[$i]}" = "" ] || [ "${bông tuyết[$i]}" = "$LINES" ]; sau đó
bông tuyết[$i]=0
khác
nếu [ "${lastflakes[$i]}" != "" ]; sau đó
printf "\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i
fi
fi
 
printf "\033[%s;%sH*\033[1;1H" ${snowflakes[$i]} $i
 
lastflakes[$i]=${snowflakes[$i]}
bông tuyết[$i]=$((${snowflakes[$i]}+1))
}
 
trong khi [ "$ans" != "q" ]
làm
    
 i=$(($RANDOM % $COLUMNS))
 
 move_flake $i

 cho x trong "${!lastflakes[@]}"
 làm
  move_flake "$x"
 xong
 đọc -sn 1 -t 0,1 ans
xong
terdon avatar
lá cờ cn
Hà! Tôi không biết `read` của bash có tùy chọn hết thời gian chờ. Tốt đẹp!
sudodus avatar
lá cờ jp
@terdon, Vâng, đó là một lựa chọn hay. Tôi đã sử dụng nó nhiều lần trong các tập lệnh của mình :-)
WinEunuuchs2Unix avatar
lá cờ in
@terdon Tôi cũng sẽ phải đọc thêm về lệnh `read` :P
Erniemenendez avatar
lá cờ ag
TUYỆT VỜI!!! Cám ơn rất nhiều!!!!
sudodus avatar
lá cờ jp
Không có gì @Erniemenendez :-) Tôi rất thích màn hình tuyết rơi, được sử dụng để chuẩn bị cho mùa đông ... làm cho nó toàn màn hình với `xterm`: `xterm -fullscreen -e bash -c 'sleep 1;./snow' ` từ thư mục nơi tôi đặt tập lệnh. Nếu bạn để tuyết tan trên mặt đất, nó sẽ là một trình bảo vệ màn hình đơn giản nhưng đẹp mắt.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.