我试图根据目录中文件的名称创建一个运行两个不同命令的脚本。
到目前为止,我创建了这个小脚本:
#!/bin/bash
declare -a sumas=("CPRAT1sfc.nc" "CPRAT2sfc.nc" "CPRATsfc.nc")
for files in *.nc; do
if [ "$files"="${sumas[@]}" ]; then
cdo daymean $files {$files}_d.nc
else
cdo daysum $files {$files}_d.nc
fi
done
我试图获取以.nc
结尾的所有文件,然后检查它们的名称是否与sumas
数组中的名称不同。
对于命名相同的文件,将运行一个命令:cdo daymean input output
,输出文件将与输入名称相同,但末尾有_d.nc
(仍需删除输入的.nc因此不会以.nc_d.nc
}结束。
如果他们的名字与sumas
不同,那么将运行另一个命令,语法与前一个类似。
我虽然脚本已准备好但我收到此错误:
scriptCDO.sh: 4: scriptCDO.sh: Syntax error: "(" unexpected
知道发生了什么事吗?
答案 0 :(得分:1)
没有足够的信息,因为$ i未设置,但您的问题主要与比较方法有关。看看这个:
#!/usr/bin/env bash
BASE_DIR="/tmp/" # change this to your base folder name
declare -a sumas=( "CPRAT1sfc.nc" "CPRAT2sfc.nc" "CPRATsfc.nc" )
i=1 # you need to set this to something
cd "${BASE_DIR}"
for each in * ; do
if [[ "${sumas[@]}" =~ "${each}" ]] ;then
echo "HERE -- cdo daymean $each {$i}_d.nc"
else
echo "NOT HERE -- cdo daysum $echo {$i}_d.nc"
fi
done