什么是在shebang线中包含解释器选项的可接受的,可移植的方式,即.我该怎么办呢
#!/usr/bin/env python -c
Run Code Online (Sandbox Code Playgroud)
或者(更重要的是)类似的东西
#!/usr/bin/env java -cp "./jars/*:./src" -Xmn1G -Xms1G -server
Run Code Online (Sandbox Code Playgroud)
并让它正确解析?现在ubuntu似乎只是将整个事情放在一起,尽管其他系统会解析这个问题没有问题.
http://en.wikipedia.org/wiki/Shebang_%28Unix%29
描述了问题,但没有解决方案.
试图从parsCit运行这个小的perl程序:
parsCit-client.pl e1.txt [filename]第1行的-CSD选项太迟了
e1.txt在这里:http://dl.dropbox.com/u/10557283/parserProj/e1.txt
我从win7 cmd运行程序,而不是Cygwin.
filename是parsCit-client.pl - 整个程序在这里:
#!/usr/bin/perl -CSD
#
# Simple SOAP client for the ParsCit web service.
#
# Isaac Councill, 07/24/07
#
use strict;
use encoding 'utf8';
use utf8;
use SOAP::Lite +trace=>'debug';
use MIME::Base64;
use FindBin;
my $textFile = $ARGV[0];
my $repositoryID = $ARGV[1];
if (!defined $textFile || !defined $repositoryID) {
print "Usage: $0 textFile repositoryID\n".
"Specify \"LOCAL\" as repository if using local file system.\n";
exit;
}
my $wsdl = "$FindBin::Bin/../wsdl/ParsCit.wsdl";
my …Run Code Online (Sandbox Code Playgroud) 在我的大量Ruby脚本集中,我用常见的shebang开始我的脚本:
#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)
现在我发现一些需要某些Ruby版本的脚本,不,它们不是可以在特定Ruby版本下部署的Rails应用程序.它们只是单个文件脚本,可以从命令行启动,无法使用系统版本.
在运行下面的文件代码之前,有没有办法编写一个用rbenv/rvm设置环境的shebang?
我希望我的脚本能够从 stdin 获取输入,其中数据可能以 UTF8 或 UTF16 编码提供。
就像是:
datasource | my-script -e utf8
如何设置 stdin 的 external_encoding ?
是否知道大多数shebang实现都支持单个参数,所以如果你有类似的东西
#!/usr/bin/env some-tool-accepting-yaml param1 param2
... (yaml body)
Run Code Online (Sandbox Code Playgroud)
它现在将按预期工作,因为它将使用"param1 param2"参数调用该工具,而不是将其拆分为两个参数.
似乎一种解决方法是使用类似的东西:
#!/bin/sh
arbitrary_long_name==0 "exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "$@"
Run Code Online (Sandbox Code Playgroud)
现在这种方法会使基于YAML的脚本由于第二行而无效,因此唯一可接受的解决方法是也是注释,也以"#"开头.
有没有办法绕过这个问题呢?
程序一次连续打印一行到标准输出。
我试图一次读取并处理该输入的一行,而不必等待程序完成。
作为示例,下面的 writeOutput.py 一次将一行写入 stdout(在每行之间等待 1 到 3 秒)。
调用./writeOutput.py | ./processEachLine.py需要 writeOutput.py 在 processEachLine.py 能够开始处理第一行之前完成。
无论如何,有没有办法在Python中实现这一点?即使直接在 python 程序中调用 writeOutput.py 而不是使用管道?
任何帮助将不胜感激。
写输出.py
#!/usr/bin/env python
import random
import time
i = 0
while i < 5:
n = int(1 + (random.random()*10) % 3)
i += 1
time.sleep(n)
print(str(n) + " test")
Run Code Online (Sandbox Code Playgroud)
处理每一行.py
#!/usr/bin/env python
import sys
while 1:
line = sys.stdin.readline()
if not line:
break
print(">>" + line)
Run Code Online (Sandbox Code Playgroud) 我们如何启动ipython REPL并指示它将一些命令行参数传递给底层的python解释器?
例如,我们可以使用增加详细程度打开python REPL
python -v
Run Code Online (Sandbox Code Playgroud)
但是在打开ipython时我无法看到如何通过那面旗帜.
我正在玩图像docker CentOS,发现/usr/bin/env bash -x在终端中执行“”命令是可以的:
bash-4.1# /usr/bin/env bash -x
bash-4.1# exit
+ exit
exit
Run Code Online (Sandbox Code Playgroud)
但是把这个命令写成脚本执行后却不起作用,提示“ No such file or directory”:
bash-4.1# ls -lt a.sh
-rwxr-xr-x. 1 root root 23 May 20 04:27 a.sh
bash-4.1# cat a.sh
#!/usr/bin/env bash -x
bash-4.1# ./a.sh
/usr/bin/env: bash -x: No such file or directory
Run Code Online (Sandbox Code Playgroud)
两种方法有什么区别吗?
我正在尝试编写一个可以作为可执行文件运行的 Octave 脚本。
我使用的是八度音阶版本 3.6.0。我运行下面的脚本下载的形式在这里:
#!/usr/local/bin/octave -qf
# An example Octave script
len = input( "What size array do you wish to use for the evaluation: " );
clear a;
tic();
for i=1:len
a(i) = i;
endfor
time1 = toc();
a = [1];
tic();
for i=2:len
a = [a i];
endfor
time2 = toc();
a=zeros( len, 1 );
tic();
for i=1:len
a(i) = i;
endfor
time3 = toc();
printf( "The time taken for method 1 was %.4f seconds\n", …Run Code Online (Sandbox Code Playgroud) 我想使用#!/bin/awk -f标头编写 awk 脚本文件,但我希望该脚本始终用作:字段分隔符。但由于某种原因,写作#!/bin.awk -F: -f给了我一个语法错误。我还希望这个脚本始终在同一个文件上运行,所以我也想对其进行硬编码。基本上,我想要的工作是这样的:
#!/bin/awk -F: -f -- /etc/passwd
Run Code Online (Sandbox Code Playgroud)
接下来是一些 awk 代码