- Linux自動(dòng)化運(yùn)維:Shell與Ansible(微課版)
- 楊寅冬主編
- 809字
- 2024-07-26 17:04:25
任務(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
推薦閱讀
- Kubernetes修煉手冊(cè)
- 電腦組裝與系統(tǒng)安裝
- Persistence in PHP with the Doctrine ORM
- 操作系統(tǒng)基礎(chǔ)與實(shí)踐:基于openEuler平臺(tái)
- 高性能Linux服務(wù)器構(gòu)建實(shí)戰(zhàn):運(yùn)維監(jiān)控、性能調(diào)優(yōu)與集群應(yīng)用
- 異質(zhì)結(jié)原理與器件
- Joomla! 3 Template Essentials
- VMware Horizon Mirage Essentials
- Linux內(nèi)核修煉之道
- 15分鐘!畫出我的漫畫角色:賣萌篇
- OpenSolaris紅寶書
- Responsive Web Design with AngularJS
- Getting Started with Citrix XenApp 6.5
- 電子商務(wù)系統(tǒng)建設(shè)與管理
- 深入理解Android:卷III