Shell輸入詳解

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:06
下一篇 2024-12-11 01:06

相關推薦

  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • Shell嵌入式介紹及應用

    本文將介紹Shell嵌入式的概念、特點和應用,並針對嵌入式系統開發中的一些問題,給出相應的解決方案。 一、Shell嵌入式概念 Shell嵌入式是一種將Shell(命令行解釋器)嵌…

    編程 2025-04-28
  • Python Shell保存PY文件的方法

    Python Shell是一種交互式編程環境,它能夠快速驗證代碼實現。有時,為了將代碼保存到文件中,我們需要了解如何在Python Shell中保存Python文件。本文將從多個方…

    編程 2025-04-27
  • Shell和Python哪個難學

    Python比Shell更難學習。 一、語法複雜度 Shell腳本是一種受眾較為廣泛的編程語言,它的語法相對於Python來說要簡單很多,很多基本的語句都只需要幾個字符就能表示出來…

    編程 2025-04-27
  • Shell對比字符串

    本文將從多個方面介紹Shell對比字符串的方法和技巧。 一、基本操作 Shell的對比字符串操作主要使用test或者[ ]操作符,其中test是[ ]的等價形式。可以使用man t…

    編程 2025-04-27
  • 使用Shell傳參給Gradle

    本文將從多個方面詳細介紹如何使用Shell傳參給Gradle,並且提供完整的代碼示例。 一、傳參的原理 在使用Gradle時,我們可以通過命令行直接傳參,比如: gradle as…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25

發表回復

登錄後才能評論