Alternate example for @lesmana solution, possibly simplified. Provides logging to file if desired. ===== $ cat z.sh TEE="cat" #TEE="tee z.log" #TEE="tee -a z.log" exec 8>&- 9>&- { { { { #BEGIN - add code below this line and before #END ./zz.sh echo ${?} 1>&8 # use exactly 1x prior to #END #END } 2>&1 | ${TEE} 1>&9 } 8>&1 } | exit $(read; printf "${REPLY}") } 9>&1 exit ${?} $ cat zz.sh echo "my script code..." exit 42 $ ./z.sh; echo "status=${?}" my script code... status=42 $
-121--126-
Начиная с Jijin P совершенно хороший ответ и ужесточение логики немного. Это должно было быть комментарием к его ответу изначально, тогда он стал слишком длинным (и он сам по себе является действительным ответом), поэтому здесь идёт:
awk 'BEGIN { FS = "," OFS = "," } FNR == NR { if ($1 in a) { a[$1] = a[$1] OFS $2 } else { a[$1] = $2 } next } $1 in a { print a[$1], $1, $2 }' file1 file2
В общем случае лучше использовать
if ($ x в миарее)
вместоif (myarray [$ x]! = «»)
, если только у вас нет конкретной причины не делать этого. Если вы просто хотите убедиться, что элемент массива не был создан, используйте первую версию. Если вы знаете, что создан , и хотите убедиться, что он не является пустой строкой, используйте вторую строку. Хитрость второго заключается в том, что, просто назвав элемент массиваmiarray [$ x]
, даже в контексте проверки его значения, элемент молча создается. В некоторых случаях это может привести к беспорядкам при печати массива с помощьюfor (index in miarray)
.При использовании
print var1, «» var2 «,» var3
это точный вариант использования, для которого существуетOFS
(разделитель выходных полей). Установка OFS в блокеBEGIN
упрощает и ускоряет изменение формата вывода для всего сценария.Наконец, при выполнении одного действия для первого файла и другого действия для второго/других файлов, шаблонный блок с
FNR = = NR
, оканчивающийся наследующий
оператор, по моему мнению, чище, чем блок if/else.
Этот пост дал мне информацию для решения моей проблемы.
https://serverfault.com/questions/87710/debian-lenny-san-lvm-fail
Я использовал слайс 1 для создания PV.
# pvcreate /dev/mapper/mpathb1
Physical volume "/dev/mapper/mpathb1" successfully created.
К вашему сведению :использовал этот скрипт для создания раздела диска
# cat a.sh
#!/bin/bash
sgdisk -og $1
partprobe $1
ENDSECTOR=`sgdisk -E $1`
sgdisk -n 1:2048:$ENDSECTOR -c 1:"Linux LVM" -t 1:8e00 $1
partprobe $1
sgdisk -p $1
Возможные причины :Что-то не так с конфигурацией фильтра. См. [1]. cat /proc/partitions
, чтобы проверить, была ли ядро прочитано таблицу разделов. В противном случае используйте partprobe
или kpartx
.