你想在 Linux 命令行中实现让脚本 / 命令执行时提示用户输入参数,核心是通过 read 命令实现交互式输入,也可以结合位置参数处理预设参数,我会分场景给你完整的实现方案。
一、基础场景:交互式提示输入单个 / 多个参数
这是最常用的方式,通过 read 命令暂停脚本执行,等待用户输入并将内容保存到变量中,适合需要用户手动输入的场景。

  1. 单个参数输入(示例:输入用户名)
#!/bin/bash
# 脚本名:input_single_param.sh

# 提示用户输入参数(-p 参数可以直接在一行显示提示语)
read -p "请输入你的用户名:" username

# 验证输入并使用参数
if [ -z "$username" ]; then  # 判断是否为空输入
    echo "错误:用户名不能为空!"
    exit 1  # 非0退出表示执行失败
fi

echo "你输入的用户名是:$username"
echo "欢迎你,$username!"
  1. 多个参数输入(示例:输入姓名 + 年龄)
    bash
    运行
#!/bin/bash
# 脚本名:input_multi_params.sh

# 提示输入多个参数
read -p "请输入你的姓名:" name
read -p "请输入你的年龄:" age

# 验证输入
if [ -z "$name" ] || [ -z "$age" ]; then
    echo "错误:姓名和年龄都不能为空!"
    exit 1
fi

# 验证年龄是数字(可选)
if ! [[ "$age" =~ ^[0-9]+$ ]]; then
    echo "错误:年龄必须是数字!"
    exit 1
fi

echo "姓名:$name,年龄:$age"
echo "$name,你今年$age岁啦~"

使用方法:
将脚本保存为 .sh 文件(比如 input_params.sh);
赋予执行权限:chmod +x input_params.sh;
运行脚本:./input_params.sh,会看到提示语,输入参数后按回车即可。
二、进阶场景:混合 “位置参数 + 交互式提示”
如果希望脚本支持直接传参(如 ./script.sh 参数1 参数2),也支持 “不传参时自动提示输入”,可以这样写:
bash
运行

#!/bin/bash
# 脚本名:mix_param_input.sh

# 定义参数变量,优先使用位置参数($1、$2 是运行脚本时传入的参数)
name=${1:-}
age=${2:-}

# 如果位置参数为空,提示用户输入
if [ -z "$name" ]; then
    read -p "请输入你的姓名:" name
fi
if [ -z "$age" ]; then
    read -p "请输入你的年龄:" age
fi

# 后续验证逻辑和上面一致
if ! [[ "$age" =~ ^[0-9]+$ ]]; then
    echo "错误:年龄必须是数字!"
    exit 1
fi

echo "最终确认:姓名=$name,年龄=$age"

测试效果:
直接传参运行:./mix_param_input.sh 张三 25 → 不提示,直接使用参数;
不传参运行:./mix_param_input.sh → 依次提示输入姓名、年龄。
三、特殊需求:隐藏输入(如密码)
如果需要输入密码、密钥等敏感信息,用 read -s 可以隐藏输入内容(输入时不显示字符):
bash
运行

#!/bin/bash
# 脚本名:input_password.sh

read -p "请输入用户名:" username
read -s -p "请输入密码:" password  # -s 隐藏输入
echo -e "\n"  # 换行(因为-s会屏蔽回车的换行)

echo "用户名:$username,密码已接收(已隐藏显示)"
# 这里可以添加密码验证逻辑,比如和预设密码对比
if [ "$password" = "123456" ]; then
    echo "密码正确,登录成功!"
else
    echo "密码错误,登录失败!"
fi

总结
核心命令:read 是实现交互式参数输入的关键,-p 用于显示提示语,-s 用于隐藏敏感输入;
输入验证:务必检查参数是否为空、格式是否正确(如数字验证),避免脚本执行出错;
灵活用法:优先使用位置参数($1/$2),为空时再提示输入,兼顾脚本的 “直接传参” 和 “交互式输入” 两种场景。
如果有具体的参数类型(比如文件路径、IP 地址)需要验证,我可以帮你写针对性的脚本模板。

文档更新时间: 2026-01-06 03:01   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室