我在下面的代码中获得第二行的ShellCheck警告[SC2045]。可以忽略它,因为我在尝试上一个import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { IonicPage } from 'ionic-angular/navigation/ionic-page';
import { Http } from '@angular/http';
@Component({
selector: 'page-lista',
templateUrl: 'lista.html',
})
@IonicPage({
name:'lista-page'
})
export class ListaPage {
private tipo: string="";
private recetas: any="";
constructor(public navCtrl: NavController, public navParams: NavParams, private http: Http) {
this.tipo = this.navParams["data"];
this.getData();
}
getData(){
this.http.get('/assets/data/datosReceta.json')
.map((res)=>res.json())
.subscribe(data=>{
console.log(this.tipo);
for(let tipo of data["data"]){
if(tipo["tipo"]==this.tipo){
this.recetas=tipo["recetas"];
console.log(this.tipo);
}
}
},(rej)=>{console.error("Error",rej)})
}
}
之前确保目录不为空吗?
ls
更新 看完帖子评论后。我已将行改为:
if [ "$(ls -A "$retryDir")" ] ; then
for thisRetryFile in $(ls "$retryDir"/*.tar.gz) ; do
scp -o ConnectTimeout=30 "$thisRetryFile" \
"$remoteUser@$remoteHost:$remotePath" >> "$BACKUPLOG"
done
fi
这已删除了警告。
答案 0 :(得分:4)
将循环与glob一起使用,并设置nullglob
以避免在模式与任何内容不匹配时执行scp
。
而且您也不需要外部if
条件,
由于for
与nullglob
有效地解决了这个问题:
shopt -s nullglob
for thisRetryFile in "$retryDir"/*.tar.gz; do
scp -o ConnectTimeout=30 "$thisRetryFile" \
"$remoteUser@$remoteHost:$remotePath" >> "$BACKUPLOG"
done
如果你想在没有文件与模式匹配的情况下捕捉到这种情况,
您可以这样写,而不使用shopt -s nullglob
:
for thisRetryFile in "$retryDir"/*.tar.gz; do
if [ -f "$thisRetryFile" ]; then
scp -o ConnectTimeout=30 "$thisRetryFile" \
"$remoteUser@$remoteHost:$remotePath" >> "$BACKUPLOG"
break
else
echo "warn: no tar.gz file in dir: $retryDir"
fi
done
答案 1 :(得分:-1)
这更安全。试试吧。
if [ "$(ls -A "$retryDir")" ] ; then
for thisRetryFile in ${retryDir}'/*.tar.gz' ; do
scp -o ConnectTimeout=30 "$thisRetryFile" "$remoteUser@$remoteHost:$remotePath" >> "$BACKUPLOG"
done
fi
问候!