[ShellScript] Tìm username có tên dài nhất và ngắn nhất trên Linux

Chào các bạn, nhằm giúp các bạn áp dụng lập trình bash shell vào thực tế hoặc làm bài tập bash shell thi cử. Thì mình sẽ cung cấp những bài tập cơ bản và nâng cao giúp các bạn trao dồi kĩ năng lập trình bash shell.

Mình không thuần là coder, nên tư duy lập trình có thể sẽ không hay bằng các bạn coder thuần nên nếu các bài tập kèm lời giải, các bạn thấy có cách hay hơn thì cứ áp dụng và chia sẻ mọi người cùng biết nhé.

Bài tập “Tìm username có tên dài nhất và ngắn nhất trên Linux”

Đề bài:

– Lập trình bash shell để tìm username có tên dài nhất và ngắn nhất trên Linux.
Mức độ : cơ bản.

Code mẫu:

– Đầu tiên, ta cần xác định là thông tin tên username trên Linux nằm ở file ‘/etc/passwd‘, ở cột thứ 1. Vậy nên ta sẽ filter cột thứ 1 với kí tự phân cách là ‘:‘.
– Kế đến ta sẽ lấy độ dài của từng cái tên, rồi so sánh chúng với các giá trị MAX và MIN đã gán trước đó.
– Download code mẫu : LINK

#!/bin/bash
# Author : Quach Chi Cuong
# Site : https://cuongquach.com/


# Khai bao bien
# Delcare neccessary variables
MAX_LENGTH_NAME=0
MIN_LENGTH_NAME=0
WHO_NAME="unknown"
count=0

# Lay thong tin ten tung username
for name in $(cat /etc/passwd | cut -d':' -f1)
do
	# Lay thong tin do dai cua bien 'name'
	# Get the length of name
	LENGTH_NAME=${#name}

	# So sanh do dai lon nhat, ai dai hon gan bien max cho nguoi do
	# Compare two length number, assign max number to max length.
	if [ ${LENGTH_NAME} -gt ${MAX_LENGTH_NAME} ];then
		MAX_LENGTH_NAME="${LENGTH_NAME}"
		WHO_MAX_NAME="${name}"
	fi

	# So sanh do dai nho nhat, ai nho hon gan bien min cho nguoi do.
	if [ "${count}" -eq 0 ];then
		MIN_LENGTH_NAME="${LENGTH_NAME}"
		((count++))
	else
		if [ ${LENGTH_NAME} -lt ${MIN_LENGTH_NAME} ];then
			MIN_LENGTH_NAME="${LENGTH_NAME}"
			WHO_MIN_NAME="${name}"
		fi
	fi
done


# In thong tin ten dai nhat va ngan nhat
# Print infor indicate whose max length name and min length name
echo "- Max length name is: $WHO_MAX_NAME - $MAX_LENGTH_NAME"
echo ""
echo "- Min length name is: $WHO_MIN_NAME - $MIN_LENGTH_NAME"

exit 0

 
Output
:

- Max length name is: shutdown - 8

- Min length name is: lp - 2

 

Previous article[Zabbix] Hướng dẫn cài đặt Zabbix Agent trên Windows Client
Next article[ShellScript] Bốn cách tính toán trong bash shell script và trên Linux
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !