我想在输出文件名(baseline.YYYYMM.var1.tar)中使用输入文件名(baseline.YYYYMM.tar)。我可以处理输入文件,但不知道如何将我需要的输出文件名传递给我的cdo应用程序:
#!/bin/bash
prefix="basename"
fndate=$(ls | grep tar|cut -c 10-15)
var="var1"
extension=".tar"
outputfile=$prefix $fndate $var $extension
for f in $(find . -name "*.tar" -print) ; do
cdo selname,var1 $f $outputfile
done
感谢
答案 0 :(得分:1)
(我同意解析ls的评论。) 你忘记了点吗?
outputfile=$prefix $fndate $var $extension
应该是
outputfile=${prefix}.${fndate}.${var}${extension}
答案 1 :(得分:0)
我不是100%肯定我得到你想要做的但是如果我是对的,你应该能够使用这样的东西从输入中获取你的输出文件名:
var=var1
for f in *.tar; do
output=$(awk -v s="$var" 'BEGIN{FS=OFS="."}{print $1, $2, s, $3}' <<<"$f")
# use "$output" however you want, e.g.
echo "$output"
done
这使用awk分割输入文件名$f
并在中间插入shell变量$var
。 <<<"$f"
是bash语法,相当于命令开头的echo "$f" |
。