我试图用grep解析一个点阵,并将输出保存在一个cshell脚本的变量中。但不知何故,我总是收到错误消息"非法变量名称"添加FILE_IN_B
变量时。我在变量名称之后尝试了不同的间距,并尝试$()
或%.*
,而不是sed删除最后四个字母但在cshell中都不起作用。还尝试在""
中设置声明,但无济于事。我真的绝望了......
#!/bin/csh
set FILE_IN = file.ext
set SOURCE = home/Developer
set FILE_IN_B=`sed '/.\{4\}$//' >>> "$FILE_IN"`.lat
set REC = `grep -C 1 'I=11' "$SOURCE/Lattice/$FILE_IN_B" | cut -d ' ' -f 3 | cut -d= -f 2| sed 's/sp//'`
答案 0 :(得分:1)
csh
有一些内置的变量操作,包括一个用于删除扩展名的操作:
% set FILE_IN=file.ext
% set FILE_IN_B="${FILE_IN:r}.lat"
% echo "$FILE_IN_B"
file.lat
如果需要sed
,那么printf
可用作标准输入,类似于便携式sh
:
% set FILE_IN=file.ext
% set FILE_IN_B=`printf %s "$FILE_IN" | sed 's/.\{4\}$//'`.lat
% echo "$FILE_IN_B"
file.lat