簡單指令碼測試 對談式指令碼 read

2021-08-26 03:16:02 字數 2454 閱讀 9631

#!/bin/bash

#user inputs his first name and last name. program shows his full name.

# history:

path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export path

read -p "please input your first name: " firstname # 提示使用者輸入

read -p "please input your last name: " lastname # 提示使用者輸入

echo -e "\nyour full name is: $firstname $lastname" # 結果由螢幕輸出

執行指令碼:

[root@sor_sys test]# sh read-p.sh

please input your first name: zhu

please input your last name:

ying

your full name is:

zhu ying

[root@sor_sys test]#

下面我們來看看read的用法:

[root@sor_sys ~]# read [-pt] variable

選項與引數:

-p :後面可以接提示字元!

-t  :後面可以接等待的『秒數!』這個比較有趣~不會一直等待使用者啦!

範例一:讓使用者由鍵盤輸入一內容,將該內容變成名為 atest 的變數
[root@sor_sys ~]#read atest
this is a test

<==此時游標會等待你輸入!請輸入左側文字看看

[root@www ~]# echo$atest
this is a test         <==你剛剛輸入的資料已經變成乙個變數內容!

範例二:提示使用者30 秒內輸入自己的大名,將該輸入字串作為名為 named 的變數內容
[root@www ~]# read-p"please keyin your name: "-t 30

named

please keyin your name: zhuying

<==注意看,會有提示字元喔!

[root@www ~]# echo $named
zhuying   <==輸入的資料又變成乙個變數的內容了!

read 之後不加任何引數,直接加上變數名稱,那麼底下就會主動出現乙個空白行等待你的輸入(如範例一)。 如果加上 -t 後面接秒數,例如上面的範例二,那麼 30 秒之內沒有任何動作時, 該命令就會自動略過了~如果是加上 -p ,嘿嘿!在輸入的游標前就會有比較多可以用的提示字元給我們參考!**********》

例子:以下只是我在其他指令碼中擷取的一部分,為了方便大家更好的理解read的用法~

done }

ps:當子程式完成後,在子程式內的各項變數或動作將會結束而不會傳回到父程式中』

[root@www scripts]# echo $firstname $lastname
[root@sor_sys test]# sh read-p.sh
<==確認了,這兩個變數並不存在喔!

please input your first name: zhu

please input your last name:ying

<==看吧!在 script 執行中,這兩個變數有生效
[root@www scripts]# echo $firstname $lastname
<==事實上,這兩個變數在父程式的 bash 中還是不存在的!

如果將程式相關性繪製成圖的話,我們以下圖來說明。當你使用直接執行的方法來處理時,系統會給予一支新的 bash 讓我們來執行 read-p.sh裡面的命令,。 當 read-p.sh執行完畢後,子程式 bash 內的所有資料便被移除,因此上表的練習中,在父程式底下 echo $firstname 時, 就看不到任何東西了!這樣可以理解嗎?sh read-p.sh

Hack World簡單指令碼學習

import requests import time import re url flag for i in range 1,43 flag的字元數為43位 max 127 所有字元總數為127 min 0 for c in range 0,127 s int max min 2 二分法找出正確字...

簡單指令碼for迴圈和while迴圈

bin bash for i 1 i 254 i 遍歷整個網段 doip 20.0.0.i ping c3 i0.2 w3 ip dev null 傳送三個資料報,間隔為0.2s,等待時間3s if eq 0 then 判斷上一條命令是否執行成功 echo echo ip up.txt 將ping通...

Linux下收集日誌的簡單指令碼

root localhost cat test.sh bin sh shihaiyan set x varible out path usagse usagse if 1 1 then usagse fiout path tmp yan if d then echo is already read ...