Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用shell脚本中的选项和参数启动自定义二进制文件_Linux_Bash_Shell - Fatal编程技术网

Linux 如何使用shell脚本中的选项和参数启动自定义二进制文件

Linux 如何使用shell脚本中的选项和参数启动自定义二进制文件,linux,bash,shell,Linux,Bash,Shell,我不知怎么搞不懂如何用shell脚本中的参数启动一个自编程序。如果我在一个父文件夹包含二进制文件的文件夹中,那么我可以用 $ ../binary --opt1 arg1 --opt2 arg2 现在,假设参数和选项列在当前文件夹的文件args中 args.txt: --opt1 arg1 --opt2 arg2 如果我试图从当前文件夹中的shell脚本执行二进制文件,如: $ ./script.sh args.txt script.sh: #!/bin/bash if [ $# != 1

我不知怎么搞不懂如何用shell脚本中的参数启动一个自编程序。如果我在一个父文件夹包含二进制文件的文件夹中,那么我可以用

$ ../binary --opt1 arg1 --opt2 arg2
现在,假设参数和选项列在当前文件夹的文件args中

args.txt:

--opt1 arg1 --opt2 arg2
如果我试图从当前文件夹中的shell脚本执行二进制文件,如:

$ ./script.sh args.txt
script.sh:

#!/bin/bash

if [ $# != 1 ]
then
    exit 1;
 fi

 params=$(<"$1")

../binary "$params"
# ../binary <<<"$params" doesn't work either.
#/bin/bash
如果[$#!=1]
然后
出口1;
fi

params=$(使用命令替换:

$ ./script.sh args.txt
/script.sh的内容

#!/bin/bash
../binary $(< "$1")
Bash通过执行命令并用命令的标准输出替换命令替换来执行扩展,并删除任何尾随的换行符。嵌入的换行符不会被删除,但可以在分词过程中删除。命令替换
$(cat文件)
可以替换为等效但更快的
$(

当使用旧式的反斜杠形式替换时,反斜杠保留其字面含义,除非后跟
$
,`,或
\
。前面没有反斜杠的第一个反斜杠终止命令替换。使用
$(命令)时
form,括号之间的所有字符组成命令;没有特殊处理的字符

命令替换可以嵌套。若要在使用反引号形式时嵌套,请使用反斜杠转义内部反引号。如果替换出现在双引号内,则不会对结果执行分词和路径名扩展


我知道,我想从脚本调用它,因为我在两个“时间命令”之间嵌入命令来测量延迟。也许我应该编辑以澄清我编辑了答案。我用这种方法测试了它,它对我来说很好。工作正常,但我认为写
“$1”
更安全,因为分词。
#!/bin/bash
../binary $(< "$1")
          $(command)
   or
          `command`