在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Linux使用read命令讀取用戶的輸入并保存到多個變量中

CHANBAEK ? 來源:myfreax ? 作者:myfreax ? 2022-12-05 16:14 ? 次閱讀

read命令是bash內置命令,可從標準輸入或者文件描述符中讀取一行并將該行按空格拆分為多個字符串賦值給多個變量。

第一個字符串賦值給第一個變量,第二個字符串賦值給第二個變量,依此類推。如果沒有為read命令提供變量名稱,將整行賦值給REPLY變量。

在本教程中,我們將說明如何在Linux使用read命令讀取用戶的輸入并保存到多個變量中。

read 命令

read命令語法形式是read [options] [name...]。為了簡單說明read命令的工作方式,請按快捷鍵CTRL+ALT+T打開終端,運行命令read var1 var2

read命令將會等待用戶輸入。可以輸入任意兩個字符串并使用空格進行分隔,例如輸入Hello World。輸入完成后按Enter。

你將會發現read命令將Hello字符串分配給變量var1World字符串賦值給變量var2。我們可以運行命令echoprintf驗證打印變量驗證這一點。

read var1 var2
echo $var1
ehco $var1
Hello
World

如果沒有為read命令提供變量名稱,則將整行分配給REPLY變量。你可以再次終端運行命令read

接著輸入任意字符串,也可以繼續輸入Hello World來驗證這一點。最后運行命令echo $REPLY打印$REPLY

read
echo $REPLY
Hello World

如果為read命令指定的變量名稱大于用戶輸入并按空格拆分后字符串數量,其余變量名稱將不會被賦值。

如果為read命令指定的變量名稱小于用戶輸入并按空格拆分后字符串數量,其余字符串將賦值給最后一個變量名稱。

例如命令echo "Hello" | (read var1 var2; echo -e "Var1: $var1 Var2: $var2")

當你運行命令echo $var1打印變量var1時,將會打印字符串Hello。命令echo $var2打印空的輸出。

#小于
echo "Hello" | (read var1 var2; echo -e "Var1: $var1 
Var2: $var2")

#大于
echo "www myfreax com" | (read var1 var2; echo -e "Var1: $var1 
Var2: $var2")

read 命令分隔符

read命令默認使用一個或多個空格,制表符和換行符作為分隔符,拆分字符串為多個字符串,然后分配給多個變量名稱。

如果要使用其它分隔符拆分字符串,請將要作為分隔符的字符賦值給IFS變量。例如命令IFS=":"IFS變量設置為:

echo "Linux:is:awesome." | (IFS=":" read -r var1 var2 var3; echo -e "$var1 
$var2 
$var3")
Linux 
is 
awesome.

如果用戶輸入字符串連續包含多個IFS變量指定的分隔符號。read命令將會在兩個彼此相鄰的分隔符,生成空值分配給變量。

例如IFS變量指定的分隔符號是:,而用戶輸入的是Linux::is:awesome.。read命令將會在::之間生成一個空值分配給變量。

echo "Linux::is:awesome." |   (IFS=":" read -r var1 var2 var3 var4; echo -e "Var1: $var1 
Var2: $var2 
Var3: $var3 
Var4: $var4")
Var1: Linux 
Var2:  
Var3: is 
Var4: awesome.

read命令還允許您使用多個分隔符號來拆分字符串。當指定多個分隔符號時,請將分隔符分配給IFS變量,并且在它們之間沒有空格。

例如命令IFS="-_"使用_-作為分隔符,

echo 'Linux_is-awesome.' | (IFS="-_" read -r var1 var2 var3; echo -e "$var1 
$var2 
$var3")
Linux 
is 
awesome.

read 命令組合echo與管道

您可以使用其他方法將標準輸入傳遞給read命令,例如管道,here-string或heredoc。而不是在標準輸入的默認方式鍵盤。

例如命令echo "Hello, World!" | (read var1 var2; echo -e "$var1 $var2")。這里之所以使用括號括起readecho命令。

是因為管道的右則是在Shell的子進程運行的,如果沒有括號命令echo -e "$var1 $var2"并不是和read命令同一進程運行。就會導致兩個變量輸出都是空。

echo "Hello, World!" | (read var1 var2; echo -e "$var1 
$var2")
Hello,
World!

read 命令組合HereDoc

默認情況下,read命令將反斜杠解釋為轉義符,有時可能會導致意外行為。要禁用反斜杠轉義,請使用read命令的-r選項。

在使用read命令時,您應該始終與read命令的-r選項一起使用。你可以運行命令read <<< "Hello, World!"與命令read -r <<< "Hello, World!"

驗證在使用read-r選項和沒有-r選項時的區別。

read <<< "Hello, 	World!"
read -r <<< "Hello, 	World!"
Hello, tWorld!
Hello, 	World!

read 命令提示消息

當編寫交互式Shell腳本時,可以使用read命令獲取用戶輸入。您還可以使用read命令的-p選項,打印一條提示消息告知用戶當前輸入在做什么操作。

如果Shell腳本要求用戶輸入敏感信息,例如密碼,可以使用read命令-s選項隱藏用戶的輸入。

例如命令read -r -s -p "Enter your password: "詢問用戶的密碼并隱藏在終端的輸出。

read -r -p "Are you sure?"
read -r -s -p "Enter your password: "

通常,您可以在while循環內使用read命令來強制用戶提供預期的答案之一。shutdown.sh腳本將提示用戶重啟系統。

while true; do
    read -r -p "Do you wish to reboot the system? (Y/N): " answer
    case $answer in
        [Yy]* ) reboot; break;;
        [Nn]* ) exit;;
        * ) echo "Please answer Y or N.";;
    esac
done

shutdown.sh

read 命令數組字符串

要將read命令拆分后的字符串分配給數組,而不是變量名稱,請使用read命令的-a選項。

read -r -a MY_ARR <<< "Linux is awesome."

for i in "${MY_ARR[@]}"; do 
  echo "$i"
done
Linux 
is 
awesome.

結論

read命令用于將讀取用戶輸入行拆分為單詞。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11351

    瀏覽量

    210504
  • 字符串
    +關注

    關注

    1

    文章

    585

    瀏覽量

    20612
  • 命令
    +關注

    關注

    5

    文章

    698

    瀏覽量

    22126
  • Read
    +關注

    關注

    0

    文章

    10

    瀏覽量

    11137
收藏 人收藏

    評論

    相關推薦

    何在Linux使用source命令加載變量與函數

    `source`命令用于在當前Shell運行文件命令,source命令可用于將函數,變量和配置文件加載當前Shell。
    的頭像 發表于 12-05 16:19 ?3101次閱讀

    linux驅動通過uboot的變量實現掉電記憶

    讀取亮度。 首先大家能想到的就是讓讓他存儲到內核能讀取到的rom中去,到底哪里合適的,方便讀寫 經過查資料,發現uboot的環境變量的更改是直接保存到rom
    的頭像 發表于 07-04 19:17 ?1187次閱讀

    何在Linux中使用htop命令

    本文介紹如何在 Linux 中使用 htop 命令
    的頭像 發表于 12-04 14:45 ?2213次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>中使用htop<b class='flag-5'>命令</b>

    labview如何自動保存加載用戶信息?

    想在程序運行結束后保存相關的用戶信息,然后在下次打開時直接讀取用戶信息,該怎么實現啊?
    發表于 01-10 10:56

    Linux用戶有關的命令

    Linux用戶有關的命令 Linux用戶有關的命令  passwd
    發表于 01-18 12:46 ?792次閱讀

    C語言入門教程-Printf:讀取用戶輸入

    Printf:讀取用戶輸入 前面的程序很好,但要是如果能從用戶那里讀入值5和7而不是使用固定的值的話,那就更好了。可以改為下面的程序: #include
    發表于 07-29 10:42 ?1918次閱讀

    Linux易混淆命令的區別

    素材來源:Linux迷 sudo 與 su 兩個命令的最大區別是:sudo 命令需要輸入當前用戶的密碼,su
    的頭像 發表于 09-25 14:25 ?1837次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b>易混淆<b class='flag-5'>命令</b>的區別

    HarmonyOS應用開發:保存到變量

    一、創建項目 二、示例代碼 // 變量始終保存在內存getNum:function () { let num = 100; function add() { num += 1
    的頭像 發表于 06-07 10:23 ?883次閱讀
    HarmonyOS應用開發:<b class='flag-5'>保存到</b><b class='flag-5'>變量</b>

    何在Linux使用pidof命令

    `pidof`是一個命令行程序,可讓您找到正在運行程序的進程ID。在教程,我們將說明如何在Linux 使用pidof命令
    的頭像 發表于 12-05 17:01 ?2393次閱讀

    如何讓變量在系統掉電時都保存到EEPROM里

    (1)問:我需要把我所有的運行時狀態變量在系統掉電時都保存到EEPROM里,我該怎么做? 答:這是不是要告訴編譯器來建立一個連續的存儲器塊? 有兩種方法你可以用來處理這個問題;我們假設只有一些確定
    的頭像 發表于 01-22 16:18 ?1468次閱讀

    Python將圖片輸出為二維數組保存到txt

    使用Python將圖片輸出為二維數組,保存到txt文件
    的頭像 發表于 01-11 16:21 ?1738次閱讀

    何在Linux上使用粘貼命令

    粘貼命令的各種選項和使用場景,通過示例和輸出演示如何使用它。 一、什么是粘貼命令? Paste命令是Unix和Linux操作系統上的一個實
    的頭像 發表于 02-08 16:58 ?1893次閱讀

    何在Linux命令運行Python腳本

    Python 是一種高級編程語言,被廣泛應用于數據科學、機器學習、Web 開發等領域。在 Linux 操作系統,Python 是一個默認安裝的解釋器,用戶可以通過命令行界面(CLI)
    的頭像 發表于 05-12 14:49 ?1771次閱讀

    shell編程基本語法

    了一個名為 name 的變量賦值為 John 。要輸出變量的值,可以使用 echo 命令: echo $name 。 輸入輸出:可以使用
    的頭像 發表于 11-08 10:46 ?530次閱讀

    input輸入多個變量

    在編程,我們經常需要從用戶那里獲取輸入。而在某些情況下,我們可能需要讓用戶一次性輸入多個
    的頭像 發表于 11-23 15:35 ?1279次閱讀
    主站蜘蛛池模板: 精品看片 | 免费看啪| 一级日本大片免费观看视频 | 色老头免费视频 | 国产理论在线观看 | 色多多在线观看视频 | 国产婷婷色一区二区三区深爱网 | 日本5级床片全免费 | 亚洲h视频 | 五月婷婷六月天 | 在线你懂的网址 | freesexvideo性欧美医生护士 | 欧美性喷潮xxxx| 亚洲 欧美 日韩 丝袜 另类 | 国产大片黄在线看免费 | 天天做夜夜爱 | 在线观看黄的网站 | 国产精品夜夜春夜夜 | 亚洲一区二区免费 | 成人欧美一区二区三区小说 | 日本一区二区三区在线观看视频 | ⅹxxxx68日本老师hd | 免费一级视频在线播放 | 国产青青草 | 小视频国产 | 黄鳝钻进下面好爽小说 | 日本不卡一区视频 | 亚洲一级视频在线观看 | 五月.com | 色香视频一sxmv首页 | 亚洲第一区二区快射影院 | 理论毛片 | 美女扒开尿口给男人看的让 | 看草逼 | 天天草综合网 | 性猛交╳xxx乱大交 性免费视频 | 在线观看视频高清视频 | 久久国产精品永久免费网站 | 黄视频在线观看免费 | 日本写真高清视频免费网站网 | 2021精品国产综合久久 |