我知道如何在Linux中重定向输出.事实是,我的bash脚本中有很多输出,我不想输入类似的东西
echo $foo >> bar
Run Code Online (Sandbox Code Playgroud)
一遍又一遍地.我宁愿做类似的事情:
hey, bash, for the time being put all your STDOUT in "bar"
echo $foo
.
.
OK, bash, you can go back to regular STDOUT now
Run Code Online (Sandbox Code Playgroud)
我尝试将FD 1作为文件打开:
exec 1>bar
Run Code Online (Sandbox Code Playgroud)
但是当我完成时,无法使STDOUT恢复正常.关闭文件
exec 1>&-
Run Code Online (Sandbox Code Playgroud)
给了我一些我无法解决的错误.
有什么办法吗?谢谢!
ATLAS 3.10.1不会安装在我组织的CentOS 6.x平台上,因为它会检测CPU限制.在旧版本的软件包中,有一个配置标志可以将油门检查关闭(-Si cputhrchk 0
)并且无论如何都要向前进.该选项在几个版本之前就被删除了.我理解这个决定背后的原因 - 开发人员担心他们软件的性能和声誉以及CPU限制使得ATLAS无法自我调整.精细.我的问题是,无论ATLAS的性能如何,我只需要完成构建.我知道,有很多方法可以停止节流,但是我没有,也许不会获得许可在这台机器上乱用CPU频率.所以我需要的是一种通过ATLAS油门检查的方法.我已经看到了一些关于破解配置脚本的讨论,但是我看不出自己该怎么做.没有人在ATLAS sourceforge网站上回答,这不是批评那里的任何人.只是想表明我的情况.所以:任何人都知道如何通过ATLAS的油门检查?谢谢.
在GNU bash的手册告诉我
如果使用语法分配任何变量,则会自动创建索引数组
Run Code Online (Sandbox Code Playgroud)name[subscript]=value
下标被视为必须求值为数字的算术表达式.如果下标求值为小于零的数字,则将其用作大于数组最大索引的偏移量的偏移量(因此-1的子标记指向数组的最后一个元素).
所以我想我会尝试一下,得到以下结果:
$ muh=(1 4 'a' 'bleh' 2)
$ echo $muh
1
$ echo ${muh[*]}
1 4 a bleh 2 # so far so good so now I'll try a negative ...
$ echo ${muh[-1]}
-bash: muh: bad array subscript # didn't go as planned!
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者网站是错误的,还是gnu bash与我在CentOS下运行的bash有什么不同?谢谢!
假设我定义了一个记录数组
>>> y=np.zeros(4,dtype=('a4,int32,float64'))
Run Code Online (Sandbox Code Playgroud)
然后我继续填写可用的4条记录.现在我获得了更多数据,比如
>>> c=('a',7,'24.5')
Run Code Online (Sandbox Code Playgroud)
我想将此记录添加到y
.我无法想出一个干净的方法来做到这一点.我见过的最好的np.concatenate()
,但这需要c
变成一个记录阵列本身.是否有任何简单的方法可以将我的元组添加c
到其中y
?这似乎应该是非常简单和广泛记录的.如果是的话道歉.我找不到它.
C不是我的第一语言,但我写了很多.我正在检查一个代码,我遇到了一个我以前从未见过的构造:
loop(i,nlevels)
{
/* do stuff based on "i" */
}
Run Code Online (Sandbox Code Playgroud)
没有do
,for
或while
."i"不在循环内部动作.我认为这意味着从0到nlevels(或者nlevels-1)顺序循环"i",但我不知道.我在K&R找不到这个.我在互联网上找不到它.有人可以开导我吗?谢谢.
主人(或父母或客户)方:
#!/usr/bin/env python
from mpi4py import MPI
import numpy
import sys
comm = MPI.COMM_SELF.Spawn(sys.executable,
args=['cpi.py'],
maxprocs=5)
N = numpy.array(100, 'i')
comm.Bcast([N, MPI.INT], root=MPI.ROOT)
PI = numpy.array(0.0, 'd')
comm.Reduce(None, [PI, MPI.DOUBLE],
op=MPI.SUM, root=MPI.ROOT)
print(PI)
comm.Disconnect()
Run Code Online (Sandbox Code Playgroud)
工人(或儿童或服务器)方:
#!/usr/bin/env python
from mpi4py import MPI
import numpy
comm = MPI.Comm.Get_parent()
size = comm.Get_size()
rank = comm.Get_rank()
N = numpy.array(0, dtype='i')
comm.Bcast([N, MPI.INT], root=0)
h = 1.0 / N; s = 0.0
for i in range(rank, N, size):
x = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译代码gfortran
.编译中发生的第一件事就是创建constants.mod
.不久之后gfortran
告诉我:
Fatal Error: Cannot read module file ‘constants.mod’ opened at (1), because it was created by a different version of GNU Fortran
Run Code Online (Sandbox Code Playgroud)
现在就是这样gfortran
的事情:这个模块文件是由它试图读取它创建的.gfortran
创建自己的东西,然后1秒后认为该文件是由其他一些版本创建的!知道这里发生了什么吗?
您可能希望看到编译命令:
mpif90 -c -O3 -ISDF/FORTRAN/include -I/usr/include -Iobj -Jobj -o obj/shared_data.o src/core/shared_data.F90
Run Code Online (Sandbox Code Playgroud)
shared_data.F90
包含constants
文件顶部的模块.
编辑:这是编译命令后跟完整的错误消息:
$> mpif90 -c -O3 -ISDF/FORTRAN/include -I/usr/include -Iobj -Jobj -o obj/shared_data.o src/core/shared_data.F90
src/core/shared_data.F90:67:6:
USE constants
1
Fatal Error: Cannot read module file ‘constants.mod’ opened at (1), because it was …
Run Code Online (Sandbox Code Playgroud) 我有一些浮点数我需要从Fortran程序输出.假设最大数字可能是999.9999,它们都是非负数.我需要在小于100的所有数字前面进行零填充.
例如,如果我有25.6893782,245.354567和1.2345678,我需要以类似的形式打印出来
025.6894
245.3546
001.2346
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?T
如果我知道,例如,所有数字都在10到99之间,那么编辑描述符就相当容易了.但我没办法提前知道.
我有一个二进制文件,我想用Fortran阅读.问题是它不是由Fortran编写的,因此它没有记录长度指示符.因此,通常未格式化的Fortran读取将无法正常工作.
我有一个想法,我可以偷偷摸摸地将文件作为格式化文件,逐字节(或4字节,4字节,真的)读入字符数组,然后将字符的内容转换为整数和浮点数转移函数或可怕的等价语句.但是这不起作用:我尝试一次读取4个字节,根据inquire
语句的POS输出,读取超过6000个字节左右,字符数组加载垃圾.
所以这是不行的.我忘了这种方法有一些细节吗?或者在Fortran中只有一种根本不同且更好的方法吗?(顺便说一句,我也试过读入一个integer*1
数组和一个字节数组.即使这些代码会被编译,当它出现在read语句中时,代码崩溃了.)
我有一个看起来像这样的文件:
good text
good text
FLAG bad text
bad text
good text
good text
good test
bad Text FLAG bad text
bad text
good text
Run Code Online (Sandbox Code Playgroud)
我需要删除任何包含"FLAG"的行,我总是需要在"FLAG"行之后立即删除一行.
"FLAG"行不规则,我不能依赖任何类型的行号策略.
谁知道如何用sed做到这一点?