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

Linux Shell脚本报错‘file1:binary operator required’求助

问题分析与解决

你的脚本错误出在if [ cp file1 /tmp ];这一行——[ ]是test命令的简写,它的作用是判断条件表达式(比如文件是否存在、字符串是否相等),而不是直接执行命令。你把cp命令放进[ ]里,test会把cp当作一个操作数,file1当作需要的二元运算符,这就触发了“binary operator required”的语法错误。

正确写法

直接在if后面跟要执行的命令即可,if会自动判断命令的退出状态码:退出码为0(命令执行成功)时,进入then分支;非0则跳过。修正后的脚本:

#!/bin/bash
if cp file1 /tmp;
then
  rm file1
fi

为什么用[[ ]]或()也不行?

  • [[ ]]和[ ]类似,都是用于条件表达式判断的语法,同样不能直接在里面放执行命令;
  • ()会创建子shell执行命令,但if (cp ...)这种写法虽然语法上没问题,但完全没必要——直接写命令本身更简洁高效,和if cp ...效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:28:17