如何向通过标准输入执行的/bin/dash脚本传递命令行参数
报错原因
dash 执行时未添加 -s 选项的情况下,会将第一个非选项参数识别为待执行的脚本文件路径,你运行 /bin/dash - arg1 时,dash 会尝试读取名为 arg1 的文件作为执行脚本,因此抛出找不到文件的错误。
解决方案
在命令中添加 -s 选项,明确告知 dash 从标准输入读取脚本内容,后续参数直接作为脚本的位置参数传递即可,正确命令如下:
curl | /bin/dash -s arg1
执行后 arg1 会作为脚本的 $1 参数正常生效,该写法同时兼容所有 POSIX 标准的 shell 环境。
内容的提问来源于stack exchange,提问作者u15p7fgy863eiq5
相关产品推荐
相关产品推荐

