2017-02-06 1 views
2

これは>>In bash, how can I check if a string begins with some value?と似ていますが、重複していません。変数がbashの別の変数で始まるかどうかを調べる

私は2つの配列を持っていて、最初の文字列内の各文字列について、2番目の文字列が最初の文字列かどうかをチェックしたいと思います。なしの成功と、その上のすべてを、また

if [[ "${array1[i]}" == "${array2[j]*}" ]] 
if [[ "${array1[i]}" == "${array2[j]}*" ]] 
if [[ "${array1[i]}" = "${array2[j]*}" ]] 
if [[ "${array1[i]}" = "${array2[j]}*" ]] 

引用符ブレース、および:

array1=("test1","test2","test3"); 
array2=("test1 etc","test1 nanana","test2 zzz","test3 abracadabra"); 

for i in "${!array1[@]}"; do 
    for j in "${!array2[@]}"; do 
    if [[ "${array1[i]}" == "${array2[j]}*" ]]; then 
     echo "array1[$i] and arry2[$j] initial matches!"; 
     fi; 
    done; 
done 

は、私の中のような、もし多くの条件を試してみました。

答えて

3

まず、コードにいくつかのエラーがあります。まず、bashの配列宣言です。スペースを置かないと要素が1つしかありません。常に変数を印刷してから、何かを試してください。 bashのドキュメントから :

ARRAY =(値1と値2 ...値N)

各値は[indexnumber =]列の形で次にあります。インデックス は任意です。指定されている場合は、そのインデックスが割り当てられます。 それ以外の場合、割り当てられた要素のインデックスは、割り当てられた最後の インデックスの番号に1を加えたものです。このフォーマットは、 宣言でも受け入れられます。インデックス番号が指定されていない場合、インデックスはゼロから始まります。サイクル配列要素へ

:ここ

for element in "${array[@]}" 
do 
    echo "$element" 
done 

は、コードスニペットです:私は彼がインデックスを使用しようとしていたことに気づいOPによるコメントの後

array1=(test1 test2 test3); 
array2=(test1 etc "test1 nanana" test2zzz test3 abracadabra); 
for word1 in "${array1[@]}"; do 
    for word2 in "${array2[@]}"; do 
     echo "w1=$word1, w2=$word2" 
     if [[ ${word2} == ${word1}* ]]; then 
      echo "$word1 and $word2 initial matches!"; 
     fi;     
    done;       
done 

、そのためには、インデックス "i"と "j"に "$"を使用する必要があります。ここ は、実用的なソリューションです:

for i in "${!array1[@]}"; do 
    for j in "${!array2[@]}"; do  
     echo "${array1[$i]} ${array2[$j]}" 
     if [[ ${array2[$j]} == ${array1[$i]}* ]]; then 
      echo "$array1[$i] and $array2[$j] initial matches!"; 
     fi; 
    done; 
done 
+0

私のコードが長くなります。私は "readarray -t array1"を使用してコマンド出力の配列を設定していますので、間違った方法で配列を宣言しましたが、ここでは私の誤りです。また、私は "!"配列の先頭に "i"と "j"をインデックスにしたいからです。しかし、あなたの解決策もうまくいきました。ありがとう。 – gcpdev

+1

ええ、インデックスを使用しようとしていることに気づいていませんでしたが、最初のソリューションはbashで優れていると思います。実装しようとしていたものを含めるように答えを更新します。 –

+0

完璧な、ちょうど私のコードで別のミスを持っています。どうもありがとうございました。 – gcpdev

関連する問題