我在另一个答案中读到,我无法将参数传递给解释器,而不是我给出的/usr/bin/env
:
另一个潜在的问题是该
#!/usr/bin/env
技巧不允许您将参数传递给解释器(除了脚本的名称,它是隐式传递的)。
但是,看起来我能够做到,因为awk
当我不给它-f
标志时它会损坏,而当我给它标志时它会被修复-f
,同时使用/usr/bin/env
:
首先,没有-f
标志:
$ cat wrap_in_quotes
#!/usr/bin/env awk
# wrap each line in quotes
# usage: wrap_in_quotes [ file ... ]
{ print "\""$0"\"" }
$ echo foobar | ./wrap_in_quotes
awk: syntax error at source line 1
context is
>>> . <<< /wrap_in_quotes
awk: bailing out at source line 1
Run Code Online (Sandbox Code Playgroud)
二、带-f
旗:
$ vim wrap_in_quotes
$ cat wrap_in_quotes
#!/usr/bin/env awk -f
# wrap each line in quotes
# usage: wrap_in_quotes [ file ... ]
{ print "\""$0"\"" }
$ echo foobar | ./wrap_in_quotes
"foobar"
Run Code Online (Sandbox Code Playgroud)
-f
标志传递给awk
?我正在运行macOS
:
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.1
BuildVersion: 16B2657
Run Code Online (Sandbox Code Playgroud)
一些 Unices,尤其是 macOS(直到 2005 年,FreeBSD)将允许这样做,而 Linux 则不允许。
相反的问题:带有 `#!/usr/bin/env command --argument` 的 Shebang 行在 Linux 上失败
归档时间: |
|
查看次数: |
3765 次 |
最近记录: |