Linux 如何使用shell脚本中的选项和参数启动自定义二进制文件
我不知怎么搞不懂如何用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
$ ../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`