Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash for循环,在输出文件名中使用输入文件名_Bash - Fatal编程技术网

bash for循环,在输出文件名中使用输入文件名

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

我想在输出文件名(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 $(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提供输入。