Shell基础-1

Tutorial: Shell基础 Category: Shell Published: 2026-04-07 13:58:25 Views: 30 Likes: 1 Comments: 0

基础-1

  1. 使用位置变量创建用户配置密码
#!/bin/bash

<<EOF
$1 是执行脚本的第一个参数
$2 是执行脚本的第二个参数
EOF

useradd "$1"
echo "$2" | passwd --stdin "$2"

  1. 定时日志备份
#!/bin/bash

SRC_FILE=/mnt/bak_log.sh

cat >$SRC_FILE <<EOF
tar -czf log-$(date +%F).tar.gz /var/log
EOF

chmod u+x $SRC_FILE

cat >/var/spool/cron/${USER} <<EOF
00 06 * * 5 $SRC_FILE
EOF
  1. 关闭回显
#!/bin/bash
read -p "请输入用户名: " user

if [ -z $user ]; then
    echo "您必需输入账户名"
    exit 2
fi

# 使用 stty -echo 关闭 shell 的回显功能
# 使用 stty echo 打开 shell 的回显功能
stty -echo
read -p "请输入密码: " pass
stty echo

# 给初始值
pass=${pass:-123456}

useradd "$user"
echo "$pass" | passwd --stdin "$user"
  1. 随机数
#!/bin/bash

# RANDOM 为系统自带的系统变量,值为 0-32767 的随机数
num=$((RANDOM % 100 + 1))
while :; do
    read -p "计算机生成了一个 1-100 的随机数,你猜: " num
    if [ $num -eq $num ]; then
        echo "恭喜,猜对了"
        exit
    elif [ $num -gt $num ]; then
        echo "Oops,猜大了"
    else
        echo "Oops,猜小了"
    fi
done

  1. case 用法
#!/bin/bash

read -p "请输入一个整数:" num1
read -p "请输入一个整数:" num2
read -p "请输入一个整数:" num3

# 不管谁大谁小,最后都打印 echo "$num1,$num2,$num3"
# num1 中永远存最小的值,num2 中永远存中间值,num3 永远存最大值

tmp=0
if [ $num1 -gt $num2 ]; then
    tmp=$num1
    num1=$num2
    num2=$tmp
fi

if [ $num1 -gt $num3 ]; then
    tmp=$num1
    num1=$num3
    num3=$tmp
fi

if [ $num2 -gt $num3 ]; then
    tmp=$num2
    num2=$num3
    num3=$tmp
fi
echo "排序后数据为:$num1,$num2,$num3"
Prev: None Next: Shell基础-2