我可以写一个Perl程序,我的第一行不是#!/path/吗?
谢谢.
所以我试图创建一些我想运行的脚本,而不是每次运行时都手动指定解释器.
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
上面是现有脚本上的shebang,它运行得像我想要的那样.
下面是我从头开始编写的脚本的shebang
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
对我来说,他们看起来完全一样,但是运行第二个给了我一个
helloWorld.py: permission denied
Run Code Online (Sandbox Code Playgroud)
两者都是使用kate,utf-8和unix行创建的.两者都与我相同.
有任何想法吗?
我正在关注CUNY的一个例子,我之前从未做过任何事情,所以我可能不知道自己在做什么.
考虑下面的程序.
当我使用该行进行编译时,gcc -g -o forwardadding forwardadding.c
我遇到了以下消息:
forwardadding.c:9:17: error: expected expression before ‘<’ token
Run Code Online (Sandbox Code Playgroud)一旦我得到代码编译,我可以使用gdb调试并运行代码更正?
代码:
#include <stdio.h>
#include <math.h>
main()
{
float sum, term;
int i;
sum = 0.0;
for( i = 1; < 10000000; i++)
{
term = (float) i;
term = term * term;
term = 1 / term;
sum += term;
}
printf("The sum is %.12f\n", sum);
}
Run Code Online (Sandbox Code Playgroud) 我在Textpad中编写了我的Perl代码(我认为它只是Windows中的avai).我通过显式调用Perl解释器在Linux cmd提示符下运行它,例如"perl script.pl".我想知道是否可以像"./script.pl"一样运行它.当我在Windows中添加shebang时,Linux提示会抱怨"找不到命令",但是如果我用Perl调用它可以正常工作,并且在dos2unix脚本之后也可以正常工作,所以问题似乎是没有被解析的shebang正确.有什么建议?为什么其余的Windows格式代码可以工作但不是shebang?
这是一个非常简单的...我只是想在没有前面的perl命令的情况下使perl脚本可执行,而是让环境从shebang行中推断出解释器.这是我的示例脚本test:
#!/usr/bin/perl
print "Hey there\n";
Run Code Online (Sandbox Code Playgroud)
然后我chmod 775 test用来使脚本可执行.如果我使用该命令perl test,我得到输出Hey there.
但是,如果我只是键入test,我没有输出.这是怎么回事?为什么我的shebang线不能让环境意识到这是perl?有人可以帮帮我吗?
我有多个 Perl 脚本,其中 shebang 行已过时。也就是说,shebang 指向 Perl 的旧版本。
每条路径旧:
#!/data/oracle10.0/perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
新版本的 Perl 已发布
#!/data/**oracle11.0**/perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
我已将 perl 命令软链接到新版本 perl 的位置。
perl -> /data/oracle11.0/perl/bin/perl
Run Code Online (Sandbox Code Playgroud)
现在,shebang 指向旧版本,perl 命令指向新版本。
所以,当我这样做时perl sample.pl,shebang 就会被忽略。
我编写了一些示例脚本来查看这一点。当我使用该命令时,shebang 行似乎被忽略了perl。但我记得旧版本的 perl 并非如此(Shebang 被认为是超过perl命令的)。
所以我的问题是,新版本的 perl(5.10)和旧版本(5.8)对于 shebang 行是否有不同的行为?如果将 perl 命令传递给新版本的 Perl,它会忽略 shebang 行吗?
我尝试将带有perl脚本的外部用户文件夹包含到我的常规perl脚本中.我如何使用linux系统变量用户($ {USER})来包含这些脚本?我试图将此变量简单地添加到脚本的第一行,但该变量未解析.
例:
#!/usr/bin/perl -I /tmp/userSpecificFolder-${USER}/anotherFolder/AndAnotherFolder/AndSoOn
Run Code Online (Sandbox Code Playgroud)
这一行的输出正是我上面写的,但它应该是
#!/usr/bin/perl -I /tmp/userSpecificFolder-CurrentUserName/anotherFolder/AndAnotherFolder/AndSoOn
Run Code Online (Sandbox Code Playgroud) Python安装在:
C:/Python/Python35
Run Code Online (Sandbox Code Playgroud)
在我的程序的顶部,我放了:
#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)
我打开 Windows 命令提示符并输入:
./words.py
Run Code Online (Sandbox Code Playgroud)
我得到的消息是:
"." is not recognized
Run Code Online (Sandbox Code Playgroud)
有人告诉我这在 Windows 上应该很好用,所以我很困惑?
#/bin/zsh
servers=('10.138.0.8' '10.138.0.91')
for srv in $servers; do
echo "Checking health for " $srv
echo "=========================================="
echo mntr | nc $srv 2181
done
Run Code Online (Sandbox Code Playgroud)
当我执行时,我没有循环第二个值10.138.0.91,如下所示
[devops@devops]~% ./healthcheck/zookeeper.sh
Checking health for 10.138.0.8
==========================================
zk_version 3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received 9
zk_packets_sent 8
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 27
zk_open_file_descriptor_count 28
zk_max_file_descriptor_count 4096
Run Code Online (Sandbox Code Playgroud)
为什么?
我有这个非便携式的shebang:
#!/usr/bin/env python -u
Run Code Online (Sandbox Code Playgroud)
它不可移植,因为python -u它作为一个单独的arg馈送到env我的系统上.
挑战:让这个shebang便携式只改变shebang - 也就是说一个单线.
换句话说,没有解决方案
我把“ #!usr/bin/env python”放在coroutine.py的第一行,但是当我尝试通过“ ./test.py”直接运行coroutine.py时,我得到了这个:
zsh: ./coroutine.py: bad interpreter: usr/bin/env: no such file or directory
我的 zshrc 有什么问题吗?