Linux
在 Linux Bash 中暫停 WinCMD 樣式的規範方法是什麼?
在Windows Batch/CMD 中,要暫停腳本的執行,您可以使用
echo "This is before pause." pause echo "The key was pressed, continuing..."
使用像say這樣的標準終端將如何實現這一點
bash
(但zsh
或其他人也應該充其量工作)?我當然可以編寫一個簡單的C
應用程序,但我不敢相信,沒有規範的方法 -sleep
不是我正在尋找的。我使用read找到了這些直接的方法:
read -p "Press [Enter] key to start backup..."
read -p "Press any key to resume ..."
read -s -n 1 -p "Press any key to continue . . ."
在函式內部但他們給我
XXX.sh: 4: read: arg count
前兩個或3: read: Illegal option -n
分別。我正在使用 bash4.4.19(1)-release
。
read
您的命令不起作用的主要原因是它們用於bash
但您正在使用sh
.引用的文章說,
在類 Unix 作業系統上,
read
是 shell 的內置bash
命令它也是許多其他 shell 中的內置命令,包括
sh
您正在使用的 shell,但read
in的語法sh
要少得多。#!/bin/bash ... read -p "Press [Enter] key to continue: " ...
請記住使文件可執行,然後將其作為程序執行
# Assume the script is called "demo" chmod a+x demo ./demo
在普通的 sh 中,沒有簡單的方法來等待單次按鍵。要求使用者按 更容易
Enter
,因為有一種簡單的方法可以等待使用者輸入一行。
read
內置命令讀取一行。您需要給它一個變數的名稱來儲存該行的內容,即使您不打算使用它。echo "Press Enter to continue." read -r line echo "Continuing."
如果您的腳本以或等效開頭
#!/usr/bin/env bash
,則有其他選項可以讓它等待單次按鍵。我認為不值得為此煩惱,並教您的使用者哪些鍵可以或不可以算作“任何鍵”。#!/usr/bin/env zsh``read
請注意,在類 Unix 系統上,在無人值守且沒有終端的情況下執行腳本是很常見的。典型的伺服器大部分時間都沒有人登錄控制台。所以要求使用者確認某事是非常少見的。