1

特定のコマンドのディレクトリをループしています。しかし、私はスペースを収容する方法がわかりません

#!/bin/bash

image=(`ls *.bmp *.jpeg *.jpg | sort`)
data=(`ls *.dat | sort`)

for ((i=0; i < ${#image[@]}; i++))
do
  echo ${image[$i]} ${data[$i]}
done

このスクリプトを実行すると、

OIS032_OS.bmp Disc
OIS034_OS.bmp Cube
OIS035_OD.bmp 200x200_9-30-2010_OD
OIS035_OS.bmp _ILM_RNFLOb.dat
OIS036_OD.bmp OIS007_Optic
OIS036_OS.bmp Disc

プログラムにこの行を返してもらいたかった

OIS016_OD.bmp  OIS016_Optic Disc Cube 200x200_OS _ILM_RNFLOb.dat 

必要なものを格納するためにbash配列を修正するにはどうすればよいですか?

data=(`ls *.dat | sort`) 
4

2 に答える 2

6

電話しないでくださいls; パターンマッチングを使用して配列にデータを入力するだけです。

shopt -s extglob    # We'll use a more complicated glob to avoid needing to sort
image=( *.@(bmp|jpeg|jpg) )
data=( *.dat )

for ((i=0; i < ${#image[@]}; i++))
do
  echo ${image[$i]} ${data[$i]}
done
于 2012-09-07T18:32:32.880 に答える
1

私は信じていますが、あなたがやりたいことができるかどうかはわかりませreadarrayMAPFILE

私は次のようなものを尋ねました:ループするリストを宣言的に定義するBash

ここに別の同様の回答リンク:https ://stackoverflow.com/a/7220619/318174

于 2012-09-07T18:26:24.107 に答える