Linux环境下如何在Csh脚本中运行.out二进制文件?
问题解决方法
错误原因
你用sh fo.out执行二进制文件是完全错误的——sh是Shell脚本解释器,只能处理文本格式的Shell脚本,没法解析二进制可执行文件,这才会报cannot execute binary file错误。
解决步骤
给二进制文件加可执行权限
先确保fo.out有执行权限,在终端运行:chmod +x fo.out修改脚本,直接执行二进制文件
把脚本里的sh fo.out $1 text改成./fo.out $1 text即可。下面提供两种可行的脚本版本:
版本1:保留Csh脚本
#!/bin/csh -f sh ./update if ($# > 1) then echo "参数过多。" exit 1 endif if ($# == 1) then ./fo.out $1 text ./fo.out $1 text endif ./RUN.sh
版本2:换成更通用的Bash脚本(推荐)
Linux环境下Bash的兼容性更好,脚本写法也更直观:
#!/bin/bash # 运行update脚本,如果update没有可执行权限,就用sh ./update ./update # 检查参数数量 if [ $# -gt 1 ]; then echo "参数过多。" exit 1 fi # 存在单个参数时,两次执行fo.out if [ $# -eq 1 ]; then ./fo.out "$1" text ./fo.out "$1" text fi # 运行RUN.sh ./RUN.sh
额外注意
如果update或RUN.sh没有可执行权限,同样可以用chmod +x update RUN.sh赋予权限,之后直接用./update和./RUN.sh执行;如果它们本身不是带Shebang的Shell脚本,保留sh ./update这种写法也没问题。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

