Как я могу знать, какой файл используется в ударе для цикла?

У меня есть очень хитрый вопрос, которым я желал заняться в течение достаточно долгого времени.

Если $line от $(cat foo), затем сделайте action1

Если $line от $(cat bar), затем сделайте action2

for line in $(cat foo) $(cat bar) ; do   
    if [ ??? ]
        then action1
        else action2
    fi
done

Что я должен был бы вставить если оператор?

1
задан 6 May 2015 в 13:35

2 ответа

Что относительно этого?

for line in $(grep '^.* 

, Если Вы хотите разделить ведущее имя файла в $line впоследствии, еще можно добавить line=$(<<<$line sed 's/^foo:\(.*\)$/\1/') и line=$(<<<$line sed 's/^bar:\(.*\)$/\1/') в если / тело.

foo /dev/null) $(grep '^.*

, Если Вы хотите разделить ведущее имя файла в $line впоследствии, еще можно добавить line=$(<<<$line sed 's/^foo:\(.*\)$/\1/') и line=$(<<<$line sed 's/^bar:\(.*\)$/\1/') в если / тело.

bar /dev/null) do if [[ ${line} =~ ^foo.*$ ]] then action1 else action2 fi done

, Если Вы хотите разделить ведущее имя файла в $line впоследствии, еще можно добавить line=$(<<<$line sed 's/^foo:\(.*\)$/\1/') и line=$(<<<$line sed 's/^bar:\(.*\)$/\1/') в если / тело.

0
ответ дан 4 October 2019 в 06:52

Сам решение

пока $line никогда не будет равняться "FILECHANGE", (скорее всего, никогда в моем случае) это будет работать

x=1
for line in $(cat foo) FILECHANGE $(cat bar) ; do
  if [ $line = FILECHANGE ]
  then x=$(($x+1))
  elif [ $x = 1 ]
  then echo 1
  elif [ $x = 2 ]
  then echo 2
  fi
done
-1
ответ дан 4 October 2019 в 06:52

Другие вопросы по тегам:

Похожие вопросы: