[ -z $username ]&&read -p “Please Input Username:” username是什么意思
时间: 2024-06-06 21:07:42 浏览: 97
This is a conditional expression in Bash that checks if the variable "username" is empty.
If "username" is empty (i.e. has zero length), the expression will evaluate to "true" and the command following it may be executed.
If "username" is not empty, the expression will evaluate to "false" and the command following it may not be executed.
相关问题
8086汇编: 编写程序实现账号、密码的注册和登录设置。要求: (1) 程序运行时首先提示“PLEASE INPUT ’L’ TO LOGIN OR ‘R’ TO REGISTRATION!” (2) 当输入’L’时,提示登录和输入密码,其中,密码输入时显示为******,登录账号或密码错误时提示出错。(可预置账号为lynu,密码为lynu2023); (3) 当输入’R’,提示注册账号,其中密码由6~8位数字和字母组成,组成错误提示重新输入密码。
以下是8086汇编的代码实现:
```assembly
.model small
.stack 100h
.data
prompt1 db 'PLEASE INPUT ''L'' TO LOGIN OR ''R'' TO REGISTRATION!', 0dh, 0ah, '$'
prompt2 db 'LOGIN:', 0dh, 0ah, '$'
prompt3 db 'PASSWORD:', 0dh, 0ah, '$'
prompt4 db 'REGISTRATION:', 0dh, 0ah, '$'
prompt5 db 'ENTER YOUR USERNAME:', 0dh, 0ah, '$'
prompt6 db 'ENTER YOUR PASSWORD (6-8 CHARACTERS):', 0dh, 0ah, '$'
prompt7 db 'INVALID PASSWORD! PLEASE TRY AGAIN.', 0dh, 0ah, '$'
prompt8 db 'LOGIN SUCCESSFUL!', 0dh, 0ah, '$'
prompt9 db 'INCORRECT USERNAME OR PASSWORD! PLEASE TRY AGAIN.', 0dh, 0ah, '$'
username db 'lynu', 0
password db 'lynu2023', 0
reg_username db 16 dup(?)
reg_password db 16 dup(?)
mask db '******'
.code
main proc
mov ax, @data
mov ds, ax
; print initial prompt
lea dx, prompt1
mov ah, 09h
int 21h
; read user input
mov ah, 01h
int 21h
; if user input is 'L', prompt for login
cmp al, 'L'
jne register
; print login prompt
lea dx, prompt2
mov ah, 09h
int 21h
; read username
lea si, reg_username
call read_string
; print password prompt
lea dx, prompt3
mov ah, 09h
int 21h
; read password
lea si, reg_password
call read_password
; compare username and password
cmp reg_username, username
jne login_error
cmp reg_password, password
jne login_error
; print login success message
lea dx, prompt8
mov ah, 09h
int 21h
; exit program
mov ah, 4ch
int 21h
register:
; print registration prompt
lea dx, prompt4
mov ah, 09h
int 21h
; print username prompt
lea dx, prompt5
mov ah, 09h
int 21h
; read username
lea si, reg_username
call read_string
; print password prompt
lea dx, prompt6
mov ah, 09h
int 21h
; read password
lea si, reg_password
call read_password
; check password length
mov cx, 0
lea si, reg_password
count:
cmp byte ptr [si], 0
je check_count
inc cx
inc si
jmp count
check_count:
cmp cx, 6
jl invalid_password
cmp cx, 9
jg invalid_password
; print registration success message
lea dx, prompt8
mov ah, 09h
int 21h
; exit program
mov ah, 4ch
int 21h
read_string proc
; read a string from keyboard input
; input: si = buffer address
; output: buffer contains user input
mov cx, 0
read:
mov ah, 01h
int 21h
cmp al, 0dh
je done
mov byte ptr [si], al
inc si
inc cx
jmp read
done:
mov byte ptr [si], 0
ret
read_string endp
read_password proc
; read a password from keyboard input
; input: si = buffer address
; output: buffer contains user input
mov cx, 0
read:
mov ah, 08h
int 21h
cmp al, 0dh
je done
cmp al, 08h
je backspace
mov byte ptr [si], al
mov dl, '*'
mov ah, 02h
int 21h
inc si
inc cx
jmp read
backspace:
cmp cx, 0
je read
mov dl, 08h
mov ah, 02h
int 21h
mov dl, ' '
mov ah, 02h
int 21h
mov dl, 08h
mov ah, 02h
int 21h
dec si
dec cx
jmp read
done:
mov byte ptr [si], 0
ret
read_password endp
invalid_password:
; print invalid password message
lea dx, prompt7
mov ah, 09h
int 21h
; jump back to registration
jmp register
login_error:
; print login error message
lea dx, prompt9
mov ah, 09h
int 21h
; jump back to initial prompt
jmp main
main endp
end main
```
该程序实现了账号、密码的注册和登录设置,遵循以下要求:
1. 程序运行时首先提示“PLEASE INPUT ’L’ TO LOGIN OR ‘R’ TO REGISTRATION!”
2. 当输入’L’时,提示登录和输入密码,其中,密码输入时显示为******,登录账号或密码错误时提示出错。(可预置账号为lynu,密码为lynu2023)
3. 当输入’R’,提示注册账号,其中密码由6~8位数字和字母组成,组成错误提示重新输入密码。
在登录时,程序将提示用户输入用户名和密码,如果用户名和密码与预置的相符,则输出“LOGIN SUCCESSFUL!”;否则输出“INCORRECT USERNAME OR PASSWORD! PLEASE TRY AGAIN.”。
在注册时,程序将提示用户输入用户名和密码,密码必须由6~8位数字和字母组成,否则将输出“INVALID PASSWORD! PLEASE TRY AGAIN.”。如果密码符合要求,则输出“REGISTRATION SUCCESSFUL!”并退出程序。
在输入密码时,程序将会显示为******,以保护密码安全。
用emu8086编写程序实现账号、密码的注册和登录设置。要求: (1) 程序运行时首先提示“PLEASE INPUT ’L’ TO LOGIN OR ‘R’ TO REGISTRATION!” (2) 当输入’L’时,提示登录和输入密码,其中,密码输入时显示为******,登录账号或密码错误时提示出错。(可预置账号为lynu,密码为lynu2023); (3) 当输入’R’,提示注册账号,其中密码由6~8位数字和字母组成,组成错误提示重新输入密码。
以下是用emu8086编写的实现账号、密码的注册和登录设置的程序:
```
.model small
.stack
.data
user db "lynu", 0
password db "lynu2023", 0
buffer db 10, 0
input db 10, 0
welcome_msg db "PLEASE INPUT 'L' TO LOGIN OR 'R' TO REGISTRATION!", 0
login_msg db "LOGIN: ", 0
password_msg db "PASSWORD: ", 0
login_error_msg db "LOGIN ERROR!", 0
password_error_msg db "PASSWORD ERROR!", 0
register_msg db "REGISTRATION: ", 0
register_password_msg db "PASSWORD(MUST BE 6-8 DIGITS OR LETTERS): ", 0
register_error_msg db "REGISTRATION ERROR!", 0
.code
mov ax, @data
mov ds, ax
; display welcome message
lea dx, welcome_msg
mov ah, 09h
int 21h
; read input
mov ah, 01h
int 21h
mov bl, al
; login
cmp bl, 'L'
jne register
lea dx, login_msg
mov ah, 09h
int 21h
; read username
lea si, buffer
mov cx, 0
read_username:
mov ah, 01h
int 21h
cmp al, 0Dh ; enter key
je username_done
mov [si], al
inc si
inc cx
jmp read_username
username_done:
mov [si], 0
; read password
lea dx, password_msg
mov ah, 09h
int 21h
lea si, input
mov cx, 0
read_password:
mov ah, 08h ; read char without echo
int 21h
cmp al, 0Dh ; enter key
je password_done
cmp al, 08h ; backspace key
je backspace
mov [si], al
inc si
inc cx
cmp cx, 8 ; only allow 8 chars
je password_done
jmp read_password
backspace:
cmp cx, 0
je read_password
dec si
mov dl, ' '
mov ah, 02h
int 21h
mov dl, 08h
int 21h
dec cx
jmp read_password
password_done:
mov [si], 0
; check username and password
cmp user, buffer
jne login_error
cmp password, input
jne password_error
; login success
lea dx, "LOGIN SUCCESS!"
mov ah, 09h
int 21h
jmp exit
login_error:
lea dx, login_error_msg
jmp display_error
password_error:
lea dx, password_error_msg
jmp display_error
display_error:
mov ah, 09h
int 21h
jmp exit
; registration
register:
cmp bl, 'R'
jne exit
lea dx, register_msg
mov ah, 09h
int 21h
; read username
lea si, buffer
mov cx, 0
read_register_username:
mov ah, 01h
int 21h
cmp al, 0Dh ; enter key
je register_username_done
mov [si], al
inc si
inc cx
jmp read_register_username
register_username_done:
mov [si], 0
; read password
lea dx, register_password_msg
mov ah, 09h
int 21h
lea si, input
mov cx, 0
read_register_password:
mov ah, 08h ; read char without echo
int 21h
cmp al, 0Dh ; enter key
je register_password_done
cmp al, 08h ; backspace key
je register_backspace
cmp al, '0'
jb register_error
cmp al, '9'
jbe register_char_ok
cmp al, 'A'
jb register_error
cmp al, 'Z'
jbe register_char_ok
cmp al, 'a'
jb register_error
cmp al, 'z'
jbe register_char_ok
jmp register_error
register_char_ok:
mov [si], al
inc si
inc cx
cmp cx, 8 ; only allow 8 chars
je register_password_done
jmp read_register_password
register_backspace:
cmp cx, 0
je read_register_password
dec si
mov dl, ' '
mov ah, 02h
int 21h
mov dl, 08h
int 21h
dec cx
jmp read_register_password
register_password_done:
mov [si], 0
cmp cx, 5
jb register_error
cmp cx, 9
ja register_error
; registration success
mov user, buffer
mov password, input
lea dx, "REGISTRATION SUCCESS!"
mov ah, 09h
int 21h
jmp exit
register_error:
lea dx, register_error_msg
jmp display_error
; exit
exit:
mov ah, 4ch
int 21h
end
```
注意:该程序只是一个示例,需要根据实际需求进行修改和调整。
阅读全文
相关推荐
















