Shell-Scripting

Übungsfragen:

Fügen Sie hier eine Bildbeschreibung ein

1. Schreiben Sie eine Funktion, um grüne 0K und rote FAILED auszugeben und festzustellen, ob ein Parameter vorhanden ist. Wenn er vorhanden ist, ist er 0k, und wenn er nicht vorhanden ist, ist er FAILED.

#!/bin/bash

function print_result() {
    
    
    if [ $# -eq 0 ]; then
        echo -e "\033[0;31mFAILED\033[0m"
    else
        echo -e "\033[0;32m0K\033[0m"
    fi
}

# 调用函数测试
print_result
print_result param1

2. Schreiben Sie eine Funktion, um festzustellen, ob keine Positionsparameter vorhanden sind. Wenn keine Parameter vorhanden sind, wird ein Fehler angezeigt.

#!/bin/bash

function check_arg() {
    
    
    if [ $# -eq 0 ]; then
        echo "Error: No arguments provided."
    else
        echo "Arguments provided."
    fi
}

# 调用函数测试
check_arg
check_arg param1

3. Schreiben Sie eine Funktion, um zwei Zahlen als Parameter zu implementieren und den Maximalwert zurückzugeben

#!/bin/bash

function max_num() {
    
    
    if [ $1 -gt $2 ]; then
        echo $1
    else
        echo $2
    fi
}

# 调用函数测试
max_num 10 20
max_num 30 20

4. Schreiben Sie eine Funktion, um zwei ganzzahlige Bitparameter zu implementieren und Addition, Subtraktion, Multiplikation und Division zu berechnen.

#!/bin/bash

function math_operation() {
    
    
    echo "Addition: $(($1 + $2))"
    echo "Subtraction: $(($1 - $2))"
    echo "Multiplication: $(($1 * $2))"
    if [ $2 -eq 0 ]; then
        echo "Cannot divide by 0."
    else
        echo "Division: $(($1 / $2))"
    fi
}

# 调用函数测试
math_operation 10 5
math_operation 20 0

5. Weisen Sie jede Zeile der Datei /etc/shadow als Element dem Array zu

#!/bin/bash

declare -a shadow_arr=() # 声明一个空数组

while read line; do
    shadow_arr+=("$line") # 将每行字符串添加到数组中
done < /etc/shadow

echo "shadow_arr: ${shadow_arr[@]}" # 打印数组元素

6. Verwenden Sie ein assoziatives Array, um die Anzahl der verschiedenen Shell-Typen zu zählen, die von Benutzern in der Datei /etc/passwd verwendet werden

#!/bin/bash

declare -A shell_counts=() # 声明关联数组

while read line; do
    shell=$(echo $line | awk -F':' '{print $NF}') # 获取shell类型
    ((shell_counts["$shell"]++)) # 关联数组计数
done < /etc/passwd

# 遍历关联数组打印每个类型的数量
for key in "${
     
     !shell_counts[@]}"; do
    echo "$key: ${shell_counts[$key]}"
done

7. Verwenden Sie ein assoziatives Array, um die Anzahl der Dateien in einem angegebenen Verzeichnis nach Erweiterung zu zählen

#!/bin/bash

declare -A file_counts=() # 声明关联数组

dir_path="/path/to/dir" # 指定目录路径

for file_path in $dir_path/*; do
    file_name=$(basename "$file_path") # 获取文件名
    extension="${file_name##*.}" # 获取文件扩展名
    ((file_counts["$extension"]++)) # 关联数组计数
done

# 遍历关联数组打印每个扩展名的数量
for key in "${
     
     !file_counts[@]}"; do
    echo "$key: ${file_counts[$key]}"
done

Supongo que te gusta

Origin blog.csdn.net/m0_51828898/article/details/129907687
Recomendado
Clasificación