【发布时间】:2017-11-03 07:03:23
【问题描述】:
我是 Linux 新手。我有一个测试系统 SuSe 64 位。我有一个使用 rpm 文件安装的可执行文件。当我通过命令行运行时,可执行文件运行良好。
linux:linux_test>path/to/executable arg1 arg2
它运行成功,但是当我将相同的命令放入 shell 脚本时,它会抛出 No such Directory or File 的错误
我使用file 命令检查了文件类型,得到了以下输出:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/LINUX 2.4.0, stripped
更多详情:
我要执行的命令是:
/opt/cds/scripts/EINJ /call del force 其中/opt/cds/scripts/EINJ 可以通过路径执行,/call del force 是传递的参数
我的 shell 脚本包含以下 2 行:
#!/bin/bash
/opt/cds/scripts/EINJ /call del force
它给了我错误:
/temp.sh: line2: /opt/cds/scripts/EINJ : No such file or directory
我也试过把命令改成cd /opt/cds/scripts && ./ENIJ /call del force
请帮助我如何从 shell 脚本执行它。
提前致谢
【问题讨论】:
-
脚本的第一行是什么样的?您指定的解释器是什么?
#!/bin/bash?这是 Leap 42.3 吗?您尝试运行什么可执行文件? -
我没有指定任何解释器,我只是在文件中添加了命令并使用 .sh 扩展名保存并使用 sh test.sh 命令执行。这个工具做一些BIOS相关的配置
-
将
#!/bin/bash添加到顶部。然后要么chmod 0755 filename.sh设置执行位(然后用./filename.sh运行它)或者只用bash filename.sh运行它。当您使用sh时,您正在调用一个符合 POSIX 的 shell,它缺乏 bash 的大部分功能(sh 是破折号(Debian Almquist Shell)一个 shell 脚本只执行您可以在命令行上执行的相同系列的命令,只要您不会更改脚本运行的环境。因此,请将您在命令行中运行的内容准确地放入脚本中(注意脚本中的arg1和arg2是"$1"和"$2"。 -
请显示脚本