bash for循环,在输出文件名中使用输入文件名
我想在输出文件名(baseline.YYYYMM.var1.tar)中使用输入文件名(baseline.yyymm.tar)。我可以处理输入文件,但不知道如何将所需的输出文件名传递给我的cdo应用程序:bash for循环,在输出文件名中使用输入文件名,bash,Bash,我想在输出文件名(baseline.YYYYMM.var1.tar)中使用输入文件名(baseline.yyymm.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
#!/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
谢谢我不能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
var=var1
对于f in*.tar;做
output=$(awk-v s=“$var”'BEGIN{FS=OFS=“.“}{print$1,$2,s,$3}'(我同意关于解析ls的评论。)
你忘了点吗
outputfile=$prefix $fndate $var $extension
应该是
outputfile=${prefix}.${fndate}.${var}${extension}
您能否编辑您的问题,使其更清楚实际问题是什么以及我们可以如何帮助您?不要解析ls
,并且绝对不要在整个目录的输出上随机进行解析。如果您有一个文件,您需要该文件上的信息以供使用stat
。Thx Walter。解析是作为占位符,以更安全的方式进行pro提供输入。