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

使用/bin/sh -c选项执行命令为何输出为空?

为什么/bin/sh -c echo helloworld没有输出?

问题原因

sh的-c选项要求紧跟的第一个参数必须是完整的命令字符串,但你写的/bin/sh -c echo helloworld里,echo被当成了-c对应的命令字符串,而helloworld变成了这个shell进程的特殊参数$0(进程名),并没有被当成echo的参数。此时shell执行的是不带任何参数的echo命令,自然不会输出内容。

翻译man sh中的相关说明

-c 从command_string操作数读取命令。
从command_name操作数设置特殊参数0的值(参见2.5.2节“特殊参数”),剩余的参数操作数依次设置位置参数($1、$2等)。
不会从标准输入读取命令。

正确写法

要把要执行的命令整体用引号包裹,让echo helloworld作为一个完整的命令字符串传给-c:

/bin/sh -c "echo helloworld"

这样shell就会执行完整的echo helloworld命令,正常输出helloworld。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:10:37