質問
その"right"の方法として以下のboolean。
for i in `ls $1/resources`; do
if [ $i != "database.db" ]
then
if [ $i != "tiles" ]
then
if [ $i != "map.pdf" ]
then
if [ $i != "map.png" ]
then
svn export -q $1/resources/$i ../MyProject/Resources/$i
...
解決
その他のソリューションは、夫婦の共通の間違い:http://www.pixelbeat.org/programming/shell_script_mistakes.html
for i in $(ls ...)
は冗長/問題 just do:for i in $1/resources*; do ...
[ $i != file1 -a $1 != file2 ]
これは、実際には2です。a.の
$i
は、引用符で囲むと名前空間の問題の原因となりまb.
-a
は非効率な場合stat
ングファイルとしてではな短絡(ピックアップしました。できるものではありませんstat
ingまります。
なみ:
for i in $1/resources/*; do
if [ "$i" != "database.db" ] &&
[ "$i" != "tiles" ] &&
[ "$i" != "map.pdf" ] &&
[ "$i" != "map.png" ]; then
svn export -q "$i" "../MyProject/Resources/$(basename $i)"
fi
done
他のヒント
短:
for i in `ls $1/resources`; do
if [ $i != databse.db -a $i != titles -a $i != map.pdf ]; then
svn export -q $1/resources/$i ../MyProject/Resources/$i
fi
done;
の -a
の場合に表現するに相当するものbooleanおよびシェル-試験までを実施。詳見 man test
使用を考慮して の場合 決算
for i in $(ls $1/resources); do
case $i in
database.db|tiles|map.pdf|map.png)
;;
*)
svn export -q $1/resources/$i ../MyProject/Resources/$i;;
esac
done
for i in `ls $1/resources`; do
if [ $i != "database.db" ] && [ $i != "tiles" ] && [ $i != "map.pdf" ] && [ $i != "map.png" ]; then
svn export -q $1/resources/$i ../MyProject/Resources/$i
今後の参照の[[試験オペレーターが好ましい。の受け答えがあり、この文書は適用され、その答えが必要に多くの引用や通話複数の試験までを実施。
の方法のようなものです:
for i in $1/resources/*; do
if [[ $i != "database.db" && $i != "tiles" &&
$i != "map.pdf" && $i != "map.png" ]]; then
svn export -q "$i" "../MyProject/Resources/$(basename $i)"
fi
done
所属していません StackOverflow