当前位置:网站首页>Shell script -read command: read data entered from the keyboard

Shell script -read command: read data entered from the keyboard

2022-07-01 08:48:00 Little snail's way

read yes Shell Built in commands , It is used to read data from standard input and assign values to variables . If there is no redirection , The default is to read the data entered by the user from the keyboard ; If redirected , Then you can read data from the file .
read The usage of the command is :

read [-options] [variables]

options Said options , As shown in the following table ;
variables Represents the variable used to store data , There can be one , There can be more than one .
options and variables It's all optional , If the variable name is not provided , Then the read data will be stored in the environment variable REPLY in .

Options explain
-a array Assign the read data to the array array, From the subscript 0 Start .
-d delimiter Use string delimiter Specify the position where the reading ends , Instead of a newline ( The data read does not include delimiter).
-e When getting user input , Code conversion of function keys , The character corresponding to the function key will not be directly explicit .
-n num Read num Characters , Instead of a whole line of characters .
-p prompt Display prompt message , The tip is prompt.
-r Read as is (Raw mode), Do not interpret backslash characters as escape characters .
-s silent mode (Silent mode), The entered characters will not be displayed on the screen . When entering passwords and other confirmation information , It is necessary to .
-t seconds Set timeout , The unit is in seconds . If the user does not complete the input within the specified time , that read Will return a non 0 The exit status of , Indicates a read failure .
-u fd Use file descriptors fd As an input source , Instead of standard input , Similar to redirection .

Code 1 Use read Command assigns values to multiple variables

#!/bin/bash
read -p "Enter some information > " name url age
echo " Website name :$name"
echo " website :$url"
echo " Age :$age"

Output :

Enter some information > jack www.baidu.com 7
 Website name :jack
 website :www.baidu.com
 Age :7

Be careful , All values must be entered on one line , Can't break , Otherwise, only the first variable can be assigned , Subsequent variables will fail to be assigned .
This example also USES -p Options , This option will prompt the user to enter... With a piece of text .

Code 2 Read only one character

#!/bin/bash
read -n 1 -p "Enter a char > " char
printf "\n"  # Line break 
echo $char

Output :

Enter a char > 1
1

-n 1 Indicates that only one character is read . After running the script , As long as the user enters one character , Immediate read end , Don't wait for the user to press enter .
printf "\n" Statement is used to achieve the effect of line breaking , otherwise echo The output of the will be on the same line as the user input , It's not easy to distinguish .

Code 3 Enter the password within the specified time

#!/bin/bash
if
    read -t 20 -sp "Enter password in 20 seconds(once) > " pass1 && printf "\n" &&  # Enter the password for the first time 
    read -t 20 -sp "Enter password in 20 seconds(again)> " pass2 && printf "\n" &&  # Enter the password for the second time 
    [ $pass1 == $pass2 ]  # Determine whether the two passwords are equal 
then
    echo "Valid password"
else
    echo "Invalid password"
fi

In this code , We use && Combined multiple commands , These commands will be executed in turn , And as a whole if The judgment condition of a sentence , As long as one of the commands fails ( Exit status is not 0 value ), The whole judgment condition fails , There is no need to execute subsequent commands .
Output :

 If the two passwords are the same , The running result is :
Enter password in 20 seconds(once) >
Enter password in 20 seconds(again)>
Valid password

 If the two passwords are different , The running result is :
Enter password in 20 seconds(once) >
Enter password in 20 seconds(again)>
Invalid password

 If the first input times out , The running result is :
Enter password in 20 seconds(once) > Invalid password

 If the second input times out , The running result is :
Enter password in 20 seconds(once) >
Enter password in 20 seconds(again)> Invalid password
原网站

版权声明
本文为[Little snail's way]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/182/202207010835460511.html