練習問題:
1. 緑の 0K と赤の FAILED を出力する関数を記述し、パラメータがあるかどうかを判断し、存在する場合は 0k、存在しない場合は 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. 位置パラメータがないかどうかを判断する関数を作成します。パラメータがない場合は、エラーが表示されます。
#!/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. 2 つの数値をパラメータとして実装し、最大値を返す関数を作成します。
#!/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. 2 つの整数ビット パラメーターを実装し、加算、減算、乗算、除算を計算する関数を作成します。
#!/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. /etc/shadow ファイルの各行を要素として配列に割り当てます。
#!/bin/bash
declare -a shadow_arr=()
while read line; do
shadow_arr+=("$line")
done < /etc/shadow
echo "shadow_arr: ${shadow_arr[@]}"
6. 連想配列を使用して、ファイル /etc/passwd 内でユーザーが使用するさまざまなタイプのシェルの数を数えます。
#!/bin/bash
declare -A shell_counts=()
while read line; do
shell=$(echo $line | awk -F':' '{print $NF}')
((shell_counts["$shell"]++))
done < /etc/passwd
for key in "${
!shell_counts[@]}"; do
echo "$key: ${shell_counts[$key]}"
done
7. 連想配列を使用して、指定したディレクトリ内のファイルの数を拡張子ごとにカウントします
#!/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