我编写了我的c shell脚本,需要确定命令状态.在下面的程序
line 4命令没有成功.但我的状态仍然存在0.我不懂为什么.根据我的理解,我应该得到1.我对吗?Line No 3命令成功.我知道这是一个非常基本的问题,但它不是家庭作业.我们需要确定工作状态所以我尝试过简单的脚本
Line 4 给我一个错误,它无法加载此版本工具
1 #!/bin/csh -f
2 source /global/etc/csh.cshrc
3 module unload her
4 module load her/2012
5 echo $status
6 if ( $status != 0) then
7 echo "Error: abhishek Unable to execute module load her/2012"
8 exit
9 endif
Run Code Online (Sandbox Code Playgroud) 我想知道可以用来从子shell更改父shell的目录的任何机制.例如,我在$ HOME中运行脚本"settings.sh".我的$ HOME有一个目录$ HOME/TEST/run.如果我的"settings.sh"脚本如下所示
#!/bin/bash
# some shell related code
# some shell related code
cd $HOME/TEST/run
exit 0
Run Code Online (Sandbox Code Playgroud)
我在$ HOME的命令提示符下执行上面的脚本.执行后,我希望我的命令提示符在目录$ HOME/TEST/run中.我明白在子shell中,它正在被cd到$ HOME/TEST/run,但是在执行结束时,它又回到了$ HOME.
使用单个脚本是否有任何优雅的方法来完成上述操作.一种方法是修改脚本"settings.sh"以生成另一个脚本,然后使用".$ HOME/generatedScript.sh"
所以我试图创建一些我想运行的脚本,而不是每次运行时都手动指定解释器.
#!/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行创建的.两者都与我相同.
有任何想法吗?
试图弄清楚如何用双引号内的单引号单引号.这就是我想要做的......
从perl开始,我想运行一个系统命令...... - 将ssh写入远程机器 - 执行'uptime'然后从中取出最后一个字段(平均负载持续15分钟).
\#\!/usr/bin/env perl
my $cmd = "ssh othermachine 'uptime | awk '{print $NF}'' > local_file.dat";
system($cmd);
Run Code Online (Sandbox Code Playgroud)
当然这不会运行......
% ./try.pl
Missing }.
%
Run Code Online (Sandbox Code Playgroud)
失踪 "}" ???看起来它将$ NF}解释为var?我试图逃避{}字符而没有运气.我试图逃避$,没有运气.我在}之前尝试了一个空格,没有运气但是不同的msg(未定义的变量).
c-shell BTW并提前感谢!