怎么用脚本获取用户输入

wen 实用脚本 1

本文目录导读:

怎么用脚本获取用户输入

  1. Python(最常用)
  2. Bash/Shell 脚本
  3. Node.js (JavaScript)
  4. Ruby
  5. Perl
  6. PHP (命令行界面)
  7. Go
  8. Rust
  9. 注意事项

在编程中获取用户输入的方法取决于你使用的脚本语言,以下是几种常见语言的实现方式:

Python(最常用)

# 获取字符串输入
name = input("请输入你的名字:")
print(f"你好,{name}!")
# 获取整数输入
age = int(input("请输入你的年龄:"))
print(f"你今年{age}岁")
# 获取浮点数
score = float(input("请输入分数:"))
# 多行输入(直到输入结束标记)
lines = []
while True:
    line = input()
    if line == "结束":
        break
    lines.append(line)

Bash/Shell 脚本

#!/bin/bash
# 基本输入
echo "请输入你的名字:"
read name
echo "你好,$name!"
# 带提示信息
read -p "请输入年龄:" age
echo "年龄:$age"
# 隐藏输入(用于密码)
read -s -p "请输入密码:" password
echo ""
# 带超时限制
read -t 5 -p "5秒内输入:" input
echo "输入内容:$input"
# 读取多个变量
read -p "输入多个值:" var1 var2 var3
echo "$var1 $var2 $var3"

Node.js (JavaScript)

使用 readline 模块:

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
// 基本用法
rl.question('请输入你的名字:', (name) => {
  console.log(`你好,${name}!`);
  rl.close();
});
// 多问题方式
rl.question('请输入名字:', (name) => {
  rl.question('请输入年龄:', (age) => {
    console.log(`${name}今年${age}岁`);
    rl.close();
  });
});

使用 async/await:

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
const question = (query) => {
  return new Promise((resolve) => {
    rl.question(query, resolve);
  });
};
async function main() {
  const name = await question('请输入名字:');
  const age = await question('请输入年龄:');
  console.log(`${name}今年${age}岁`);
  rl.close();
}
main();

Ruby

# 获取输入
puts "请输入你的名字:"
name = gets.chomp  # chomp去掉末尾换行符
puts "你好,#{name}!"
# 转换为数字
print "请输入年龄:"
age = gets.to_i
puts "你今年#{age}岁"
# 一次获取多个值
puts "输入两个数字(空格分隔):"
a, b = gets.split.map(&:to_i)
puts "和为:#{a + b}"

Perl

#!/usr/bin/perl
print "请输入你的名字:";
my $name = <STDIN>;
chomp($name);
print "你好,$name!\n";
# 读取数字
print "请输入年龄:";
my $age = <STDIN>;
chomp($age);
print "你今年$age岁\n";

PHP (命令行界面)

<?php
// 获取输入
echo "请输入你的名字:";
$name = trim(fgets(STDIN));
echo "你好,$name!\n";
// 使用新的PHP函数(PHP 7.2+)
$age = readline("请输入年龄:");
echo "你今年$age岁\n";
?>

Go

package main
import (
    "bufio"
    "fmt"
    "os"
    "strings"
)
func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("请输入你的名字:")
    name, _ := reader.ReadString('\n')
    name = strings.TrimSpace(name)
    fmt.Printf("你好,%s!\n", name)
    // 读取数字
    fmt.Print("请输入年龄:")
    var age int
    fmt.Scanln(&age)
    fmt.Printf("你今年%d岁\n", age)
}

Rust

use std::io;
fn main() {
    println!("请输入你的名字:");
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("读取失败");
    let name = name.trim();
    println!("你好,{}!", name);
    // 读取数字
    println!("请输入年龄:");
    let mut age = String::new();
    io::stdin().read_line(&mut age).expect("读取失败");
    let age: u32 = age.trim().parse().expect("请输入数字");
    println!("你今年{}岁", age);
}

注意事项

  1. 输入验证:始终验证用户输入,防止程序崩溃
  2. 编码问题:某些环境直接处理输入可能有编码问题
  3. 清除缓冲区:在连续读取时注意清空输入缓冲区

选择哪种方法取决于你的脚本运行环境和需求,最常见的还是Python的input()、Shell的read和Node.js的readline

抱歉,评论功能暂时关闭!