Shell是一種腳本語言,通常用於自動化執行任務和處理文件。對於一個開發者來說,熟練掌握Shell輸入是非常必要的。在本篇文章中,我們將從多個方面探討Shell輸入的相關內容。
一、Shell輸入回車默認值
當我們在Shell中輸入註冊用戶的性別時,我們希望只允許輸入“男”或“女”,如果用戶輸入其他值,那麼程序會要求用戶重新輸入。在這種情況下,我們可以設置默認值,讓用戶輸入回車,則會使用默認值。下面是示例代碼:
read -p "請輸入你的性別(默認為男):" sex sex=${sex:-男} echo "你的性別是$sex"
上述代碼中,使用了read命令向用戶請求輸入,並使用了-p選項指定了提示信息。如果用戶輸入回車,則使用默認值“男”;否則,使用用戶輸入的值。運行以上代碼,示例如下:
請輸入你的性別(默認為男): 你的性別是男
二、Shell判斷輸入
在Shell中,我們經常需要判斷用戶輸入是否符合我們的要求。在下面的示例中,我們用到了if語句對用戶輸入的值進行判斷。
read -p "請輸入你的年齡:" age if [ $age -le 18 ];then echo "你還未成年" else echo "你已成年" fi
在上述代碼中,我們使用了read命令向用戶請求輸入,然後使用if語句判斷用戶輸入的年齡是否小於等於18。如果是,則輸出“你還未成年”,否則輸出“你已成年”。示例輸出如下:
請輸入你的年齡:20 你已成年
三、Shell輸入命令
在Shell中,我們可以使用read命令獲取用戶輸入的命令,並使用eval命令來執行該命令。下面是示例代碼:
read -p "請輸入一個命令:" cmd eval $cmd
在上述代碼中,我們使用了read命令請求用戶輸入命令,並使用eval命令來執行該命令。示例輸出如下:
請輸入一個命令:ls -l 總用量 24 drwxr-xr-x 1 root root 12288 7月 30 07:24 bin drwxr-xr-x 3 root root 4096 8月 7 07:37 lib drwxr-xr-x 2 root root 4096 7月 30 07:24 sbin drwxr-xr-x 2 root root 4096 7月 30 07:24 src
四、Shell輸入一組數據求最大值
在Shell中,我們可以使用循環語句和判斷語句來求一組數據的最大值。下面是示例代碼:
read -p "請輸入數據(以空格分隔):" data max=0 for i in $data do if [ $i -gt $max ];then max=$i fi done echo "數據中的最大值為:$max"
在上述代碼中,我們使用了read命令請求用戶輸入一組數據,並使用循環語句和判斷語句來求得這組數據的最大值。示例輸出如下:
請輸入數據(以空格分隔):5 9 3 7 2 數據中的最大值為:9
五、Shell輸入參數
在Shell中,我們可以使用$0、$1、$2等變量獲取腳本或函數的參數。下面是示例代碼:
#!/bin/bash echo "腳本名稱:$0" echo "第一個參數:$1" echo "第二個參數:$2"
在上述代碼中,我們使用了$0、$1、$2等變量來獲取腳本或函數的參數,並使用echo命令輸出這些變量的值。示例輸出如下:
$ ./test.sh arg1 arg2 腳本名稱:./test.sh 第一個參數:arg1 第二個參數:arg2
六、Shell輸入名字年份
在Shell中,我們可以使用read命令請求用戶輸入名字和年份,並使用echo命令輸出拼接後的字符串。下面是示例代碼:
read -p "請輸入你的名字:" name read -p "請輸入你的出生年份:" year age=`expr $(date +%Y) - $year` echo "你好,$name,你今年${age}歲了"
在上述代碼中,我們使用了read命令請求用戶輸入名字和年份,並使用expr命令計算出用戶的年齡,並使用echo命令輸出拼接後的字符串。示例輸出如下:
請輸入你的名字:張三 請輸入你的出生年份:1990 你好,張三,你今年31歲了
七、Shell輸入一個數字
在Shell中,我們可以使用read命令請求用戶輸入一個數字,並使用正則表達式判斷用戶輸入是否為數字。下面是示例代碼:
while true do read -p "請輸入一個數字:" num if [[ $num =~ ^[0-9]+$ ]]; then echo "$num 是一個數字" break else echo "輸入有誤,請重新輸入" fi done
在上述代碼中,我們使用了while循環語句,在循環體內使用read命令請求用戶輸入數字。然後使用正則表達式判斷用戶的輸入是否為數字。如果輸入正確,則輸出“xxxx是一個數字”,否則提示用戶輸入有誤。示例輸出如下:
請輸入一個數字:abc 輸入有誤,請重新輸入 請輸入一個數字:123 123 是一個數字
八、Shell輸入密碼不顯示
在Shell中,我們可以使用read命令請求用戶輸入密碼,並使用密碼模式隱藏用戶的輸入。下面是示例代碼:
#!/bin/bash echo -n "請輸入密碼:" read -s password echo echo "你輸入的密碼是:$password"
在上述代碼中,我們使用了-s選項讓read命令進入密碼模式,並使用echo命令輸出用戶的密碼。在輸出之前,我們使用了-n選項使echo命令不換行。示例輸出如下:
請輸入密碼:(用戶輸入密碼,但不可見) 你輸入的密碼是:(用戶輸入的密碼)
九、Shell輸入密碼
在Shell中,我們可以使用read命令請求用戶輸入密碼,並使用stty命令設置終端顯示模式。下面是示例代碼:
#!/bin/bash echo -n "請輸入密碼:" stty -echo read password stty echo echo echo "你輸入的密碼是:$password"
在上述代碼中,我們使用了-stty命令來設置終端的顯示模式。在讀取用戶輸入密碼之前,我們使用了-echo選項來關閉終端輸出,這樣用戶輸入的密碼就不會被顯示出來。在讀取完用戶輸入的密碼後,我們使用了echo命令輸出。示例輸出如下:
請輸入密碼:(用戶輸入密碼,但不可見) 你輸入的密碼是:(用戶輸入的密碼)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/231702.html