bash – 如何欺骗shebang允许多个参数?
发布时间:2020-12-15 17:00:06 所属栏目:安全 来源:网络整理
导读:是否知道大多数shebang实现将支持单个参数,所以如果你有类似的东西 #!/usr/bin/env some-tool-accepting-yaml param1 param2... (yaml body) 它现在将按预期工作,因为它将使用“param1 param2”参数调用该工具,而不是将其拆分为两个参数. 似乎一个workaround
是否知道大多数shebang实现将支持单个参数,所以如果你有类似的东西
#!/usr/bin/env some-tool-accepting-yaml param1 param2 ... (yaml body) 它现在将按预期工作,因为它将使用“param1 param2”参数调用该工具,而不是将其拆分为两个参数. 似乎一个workaround练习是使用类似的东西: #!/bin/sh arbitrary_long_name==0 "exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "$@" 现在这种方法会使基于YAML的脚本由于第二行而无效,因此唯一可接受的解决方法是也是注释,也以“#”开头. 有没有办法绕过这个问题呢?
不使用多语言脚本的一般解决方案
launcher.sh #!/bin/bash # first argument to be split if [[ $- != *f* ]]; then reset=1; fi set -f arg=( $1 ) shift if [[ $reset = 1 ]]; then set +f; fi # other arguments arg+=("$@") # launch command exec "${arg[@]}" 脚本 #!/path/to/launcher.sh interpreter opts (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |