Сценарий оболочки C: как я сравниваю две строки?

Не уверенный, если существует более авторитетный источник (т.е. страница справочника / официальная документация) по этой проблеме, но я нашел сайт, который объясняет это поведение: http://mywiki.wooledge.org/glob

Поскольку extglob опция изменяет способ, которым анализируются определенные символы, необходимо иметь новую строку (не только точка с запятой) между командой shopt и любыми последующими командами, то использование расширило шарики. Аналогично, Вы не можете поместить shopt-s extglob в блоке операторов, который использует расширенные шарики, потому что блок в целом должен быть проанализирован, когда он определяется; команда shopt не вступит в силу, пока блок не оценен, в которой точке слишком поздно. На самом деле, поскольку удар анализирует весь блок операторов прежде, чем оценить любой из него, необходимо установить extglob за пределами наиболее удаленного блока.

1
22.10.2013, 07:29
1 ответ

Вот демонстрационный сценарий, который использует команду paste сопоставлять эти 2 файла в единственный список:

A-A
B-C
...

Это затем анализирует каждую объединенную строку в, он - 2 дискретных части и хранит их в переменных f1 и f2.

#!/bin/csh

foreach i (`paste -d"-" file1 file2`)
  set f1=`echo $i | cut -d"-" -f1`
  set f2=`echo $i | cut -d"-" -f2`
  if ($f1 == $f2) then
    echo "$f1 $f2 -> match"
  else
    echo "$f1 $f2 -> "'" "'
  endif
end

Остальная часть кода является стандартной оболочкой C.

Пример

$ ./cmd.csh
A A -> match
B C -> " "
C B -> " "
D D -> match
E E -> match

Ссылки

1
27.01.2020, 23:53

Теги

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