使用变量while while循环bash
问题描述:
我有下面的while循环使用变量pov。我需要将每行设置为一个可以在连接字符串中调用的变量,但无法弄清楚如何创建一个循环来分别为每行提供数据。使用变量while while循环bash
想if [ ! -z $pov] then .../shell to execute using $pov... fi
在seq_fy.txt
每一行我所用的工作:
cat seq_fy.txt | while read pov; do
echo "pov$((n++))=$pov"
###wanting "if [ ! -z $pov] then <execute> fi" for each line in seq_fy.txt
done
$ ./while_loop_only
pov0=
pov1=SPT_SEQ_010,FY15
pov2=SPT_SEQ_010,FY16
pov3=SPT_SEQ_020,FY15
pov4=SPT_SEQ_020,FY16
pov5=SPT_SEQ_030,FY15
pov6=SPT_SEQ_030,FY16
pov7=SPT_SEQ_040,FY15
pov8=SPT_SEQ_040,FY16
pov9=SPT_SEQ_050,FY15
pov10=SPT_SEQ_050,FY16
答
貌似我一直这样过分析这个.... 基本上我并不需要什么与POV或导出变量在所有,只是简单地把命令放在while循环中,并在$行中进行,并似乎按预期工作
cat fiename.txt | while read line; do
$owsdirectory"/hpm_ws_client.sh" processCalcScriptOptions "$appName" "$line" "$layers" "$stages" "" "$stages" "$stages" FALSE > "$appLogFolder""/""$line""_ProcessID.log"
done
+1
这就对了。不想处理空的参数,添加'if [-n“$ line”];然后... command ...; fi'注意'['命令名称及其匹配的']'最后一个参数和变量周围的引号习惯引用变量;它通常是正确的在你的代码中,如果最好写''$ owsdirectory“/ hpm_ws_client.sh'或''$ owsdirectory/hpm_ws_client.sh“',再次用双引号括住变量。日志文件名可以从''$ appLogFolder“”/“”$ line“”_ ProcessID.log“'简化为'”$ appLogFolder/$ {line} _ProcessID.log“'。 –
你需要在这里做什么?你为什么注意顺序命名的变量?你真的需要用'$ pov'的值在那个循环中运行什么命令? –
请查看[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – Cyrus
它调用OWS ...我不必将它定义为POV,但我需要将每行的值作为变量运行商业模型。现在,在单独的if语句中,我执行以下操作(导出pov1后):export pov = $ {pov01 // \“/} $ owsdirectory”/hpm_ws_client.sh“processCalcScriptOptions”$ appName“”$ pov“” $ layers“”$ stages“”“”$ stages“”$ stages“FALSE>”$ appLogFolder“”/“”$ step“”_ ProcessID.log“ –