官术网_书友最值得收藏!

任務(wù)1.4.3 Shell變量操作

1. 任務(wù)描述

在Shell中,變量主要用于保存和引用各種類型的數(shù)據(jù),可以用于存儲(chǔ)各種信息,如字符串、數(shù)字等。變量在Shell中非常常用,可以用于存儲(chǔ)用戶輸入的數(shù)據(jù)、存儲(chǔ)程序運(yùn)行過程中產(chǎn)生的數(shù)據(jù)、存儲(chǔ)程序執(zhí)行結(jié)果,還可以用于條件判斷和循環(huán)控制、存儲(chǔ)文件名和路徑、文件處理、存儲(chǔ)環(huán)境變量、程序的配置和運(yùn)行等。

2. 任務(wù)實(shí)施

(1)編寫Shell腳本,使用變量獲取主機(jī)的內(nèi)存信息、網(wǎng)絡(luò)互聯(lián)網(wǎng)協(xié)議(Internet Protocol,IP)地址、CPU負(fù)載等信息。


[opencloud@server ~]$ vim systeminfo-output.sh 
#!/bin/bash 
# 獲取內(nèi)存信息 
memory=$(free -m | awk 'NR==2{printf "Total: %sMB, Used: %sMB, Free: %sMB", $2, $3, $4}') 
# 獲取網(wǎng)絡(luò) IP地址 
ip=$(ip addr | grep 'inet' | grep -v 'inet6' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d '/' -f 1) 
# 獲取 CPU 負(fù)載 
cpu=$(top -bn1 | grep 'Cpu(s)' | awk '{print $2}' | cut -d '%' -f 1) 
# 輸出信息 
echo "Memory: $memory" 
echo "IP: $ip" 
echo "CPU: $cpu%" 
# 注意,在使用變量獲取信息時(shí),需要使用 $(...) 語法來執(zhí)行命令并將結(jié)果賦給變量 
# 執(zhí)行腳本并查看輸出結(jié)果 
[opencloud@server ~]$ bash systeminfo-output.sh 

(2)編寫Shell腳本,輸出$0、$1、$2、$3、$@、$#、$!、$?、$*、$$等位置參數(shù)的變量信息。


[opencloud@server ~]$ vim location-output.sh
#!/bin/bash
# 提示用戶輸入他們的姓名
echo "Please enter your name: "
read name
# 輸出各變量的值
echo "\$0 is: $0"
echo "\$1 is: $1"
echo "\$2 is: $2"
echo "\$3 is: $3"
echo "\$@ is: $@"
echo "\$# is: $#"
echo "\$! is: $!"
echo "\$? is: $?"
echo "\$* is: $*"
echo "\$\$ is: $$"
echo "Name is: $name"
# 執(zhí)行腳本并查看輸出結(jié)果
[opencloud@server ~]$ bash location-output.sh one two three
Please enter your name:
one two three
$0 is: location-output.sh
$1 is: one
$2 is: two
$3 is: three
$@ is: one two three
$# is: 3
$! is:
$? is: 0
$* is: one two three
$$ is: 2859485
Name is: one two three

(3)輸出當(dāng)前目的日歷信息,并使用printf命令格式化輸出。


[opencloud@server ~]$ vim date-output.sh
#!/bin/bash
# 獲取當(dāng)前月份和年份
month=$(date +%m)
year=$(date +%Y)
# 使用cal命令獲取當(dāng)前月的日歷
calendar=$(cal $month $year)
# 使用printf命令格式化輸出
printf "Calendar for %s %s:\n\n" $month $year
printf "%s\n" "$calendar"
# 執(zhí)行腳本并查看輸出結(jié)果
[opencloud@server ~]$ bash date-output.sh 
Calendar for 01 2023: 
    January 2023     
Su Mo Tu We Th Fr Sa 
 1  2  3  4  5  6  7 
 8  9 10 11 12 13 14 
15 16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31 

(4)編寫Shell腳本,使用變量并結(jié)合printf命令格式化輸出當(dāng)前系統(tǒng)的磁盤分區(qū)、swap分區(qū)、邏輯卷信息等。


[opencloud@server ~]$ vim disk-output.sh
#!/bin/bash
# 使用df命令獲取磁盤分區(qū)信息
disk_partitions=$(df -h)
# 使用swapon命令獲取swap分區(qū)信息
swap_partitions=$(swapon -s)
# 使用lvdisplay命令獲取邏輯卷信息
logical_volumes=$(lvdisplay)

# 使用printf命令格式化輸出
printf "Disk Partitions:\n\n"
printf "%s\n" "$disk_partitions"
printf "\nSwap Partitions:\n\n"
printf "%s\n" "$swap_partitions"
printf "\nLogical Volumes:\n\n"
printf "%s\n" "$logical_volumes"
# 執(zhí)行腳本并查看輸出結(jié)果
[opencloud@server ~]$ bash disk-output.sh

主站蜘蛛池模板: 兴文县| 高安市| 井冈山市| 蕲春县| 垣曲县| 扶绥县| 枞阳县| 彰化县| 马山县| 太白县| 嘉祥县| 司法| 中方县| 贞丰县| 张家港市| 道孚县| 海阳市| 棋牌| 凤阳县| 河池市| 原平市| 沅陵县| 千阳县| 诸暨市| 绥阳县| 张家港市| 闻喜县| 新宁县| 综艺| 南澳县| 高碑店市| 佛山市| 井研县| 聊城市| 阜康市| 克山县| 双牌县| 贵德县| 繁峙县| 怀宁县| 鄂州市|