You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Bash脚本条件判断失效求助(新手,Ubuntu 22.10)

问题与解决方案

问题描述

我是Dono,一名Linux Bash新手。通过Windows系统SSH连接到Ubuntu 22.10版本的Linode服务器,编写了Bash脚本,希望实现:输入“jeux”(对应英文“games”)时输出“Bon jeux!”,输入其他内容时输出“Bonne journée!”,但脚本的条件判断逻辑失效,无法正常执行。同时不清楚Linux下SSH会话中的复制粘贴操作方法。

附上脚本代码:

#!/bin/sh

name=Dono
user=$(whoami)
date=$(date)
whereamit=$(pwd)

echo "Yio $name, comment tu va?"
sleep 2
echo "Tu es connecter avec l'utilisateur $user."
sleep 1 
echo "Nous sommes le $date."
sleep 2

echo "Que veux tu faire maintenant?"
read reponse
sleep 1

if ( reponse = jeux)
then
        echo "Bon jeux!"
    
else 
        echo "Bonne journée!"
fi

一、脚本条件判断修复

你的脚本条件判断存在3个核心错误:

  1. Bash中()用于执行子shell命令,不能用来做条件判断;
  2. 引用变量必须加$符号,需写$reponse而非reponse;
  3. 条件判断的=符号前后必须留空格,否则会被识别为字符串而非比较运算符。

修改后的正确脚本:

#!/bin/sh

name=Dono
user=$(whoami)
date=$(date)
whereamit=$(pwd)

echo "Yio $name, comment tu va?"
sleep 2
echo "Tu es connecter avec l'utilisateur $user."
sleep 1 
echo "Nous sommes le $date."
sleep 2

echo "Que veux tu faire maintenant?"
read reponse
sleep 1

# 修复后的条件判断:用[]包裹逻辑,变量加$,=前后留空格,字符串加引号避免空格干扰
if [ "$reponse" = "jeux" ]
then
        echo "Bon jeux!"
    
else 
        echo "Bonne journée!"
fi

也可以使用Bash更推荐的[[ ]]写法(兼容性稍差但语法更灵活):

if [[ "$reponse" == "jeux" ]]

二、SSH会话中的复制粘贴操作(Windows端)

根据你使用的终端工具,操作方式有所区别:

  • Windows Terminal/CMD/PowerShell:
    • 复制:选中文本后按Ctrl+Shift+C
    • 粘贴:按Ctrl+Shift+V
  • PuTTY:
    • 复制:直接选中文本,系统自动复制到剪贴板
    • 粘贴:在PuTTY窗口内点击右键
  • WSL终端:操作与Windows Terminal一致,使用Ctrl+Shift+C/V

注意:若无法选中文本,可右键点击终端标题栏→「属性」,开启「快速编辑模式」即可正常操作。

内容的提问来源于stack exchange,提问作者Dono Config

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:20:50