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

Bash脚本调用Docker报-r短标志错误,如何正确执行命令?

在Bash脚本中正确执行排序Docker容器名称的命令

直接将命令存入普通变量后执行时,Bash的分词机制会把read -r拆分成独立参数,导致Docker错误地将-r识别为自身的命令行选项,从而抛出unknown shorthand flag: 'r' in -r错误。以下是两种可行的解决方法:

方法1:用函数封装命令(推荐)

将命令逻辑封装为Bash函数,调用函数即可避免分词问题,同时更易维护和复用:

sorted_docker_names() {
    docker ps --format "table {{.Names}}" | (read -r; printf "%s\n" "$REPLY"; sort -k 1 )
}

# 调用函数获取排序后的容器名
sorted_docker_names

方法2:用eval执行变量中的命令

如果必须用变量存储命令,可以借助eval来正确解析命令中的管道、子shell等语法:

docker_cmd='docker ps --format "table {{.Names}}" | (read -r; printf "%s\n" "$REPLY"; sort -k 1 )'

# 使用eval执行命令
eval "$docker_cmd"

额外优化建议

如果不需要保留表头,可简化命令直接跳过表头处理步骤:

docker ps --format "{{.Names}}" | sort

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:50:53