Я делаю это с: установщик VMware-u плеер VMware. - Debian 7 - 64 бита Затем я мог установить рабочую станцию VMware 9 в тесте без любой проблемы.
После нескольких миллионов загрузок и тестирования. Я нашел его. Вопрос:
В сценарии я «вырезал» имя файла из символа («&»).
nameCap=${nameCap%%&*}
Что происходит, так это то, что Главная папка и подпапки создавались с Пробелом и концом папки, например, «Имя папки». То же самое происходило и с подпапками. Я просто добавить, чтобы удалить последний символ папки я создаю.:
nameCap="${nameCap%?}"
-121--244841- Вы можете проверить позицию команды в последовательности истории с помощью команды history
. Затем можно выполнить ! < number _ in _ the _ sequence >
. Надеюсь, это поможет.
Если я правильно понимаю, вы хотите выполнить команду ipcrm shm < ids >
для всех сегментов общей памяти пользовательского боба. Затем выполните команду ipcrm -s < ids >
для всех массивов Semaphore пользовательского боба.
Для этого используйте следующие команды (не нужно закольцовывать сценарий):
Для части «Сегменты общей памяти»:
ipcrm shm $(ipcs -m | awk '$3=="bob" {printf "%s ",$2}')
Для части «Массив семафора»:
ipcrm -s $(ipcs -s | awk '$3=="bob" {printf "%s ",$2}')
Объяснение:
Из ipcs
manpage:
-m shared memory segments
-s semaphore arrays
Часть awk
печатает идентификаторы только в 3-и поля
Как предложил SLM на ваш другой вопрос ,
Я предлагаю сделать это с , а
петля, а не на для цикла
:
looking_at=
ipcs | while read key id owner other
do
# Keep track of which section we’re in.
if [ "$id" = "Shared" ] # $id is the second field; i.e., $2.
then
looking_at=shm
elif [ "$id" = "Semaphore" ]
then
looking_at=sem
elif [ "$id" = "Message" ]
then
break
fi
if [ "$owner" = "bob" ]
then
if [ "$looking_at" = "shm" ]
then
ipcrm shm "$id"
elif [ "$looking_at" = "sem" ]
then
ipcrm -s "$id"
fi
fi
done
Это считывает вывод команды IPCS
в одну строку за раз,
Вырывая первые три поля в виде клавиши
, ID
, и владелец
.
Как говорит комментарий,
Мы используем Selection_at
переменную для отслеживания того, какой раздел мы находимся.
Затем, на каждой строке, которая содержит BOB
в третьем поле,
Мы используем Slection_at
, чтобы определить, какой параметр IPCRM
для использования.
, Возможно...
ipcs | sed -n '
s/[^ ]* *//
/^Messages/q
/^Semaphores/cshift
/ *bob .*/!d;s///
/ /!s/./ipcrm $1 &/p
'| sh -s -- shm \-s
, Который удаляет строки, которые не содержат последовательность боб , поскольку третье пространство разграничило поле или , которые не имеют в их вторых полевых сообщениях/Семафорах.
Это вставляет последовательность ipcrm 1$ <поле 2>
для тех строк, которые остаются. Это выходит из входа при соответствии сообщения , и это заменяет Семафоры сдвиг w/ соответствия
.
вывод sed
интерпретируется процессом оболочки с двумя positionals shm/-s. Таким образом, когда sed
говорит сдвиг
, что оболочка прекращает выполнять команду ipcrm отметка курса корабля
и начинает работать -s
в месте shms.
я предполагаю, хотели ли вы чистое решение для оболочки, это приближается:
set -f; IFS='
'; for l in $(ipcs);
do IFS=\ ;set -- $l
case "$1:$2:${3#bob}" in
(-*:Sh*) a=shm;;
(-*:Se*) a=-s;;
(-*:Me*) break 2;;
(*:*:) ipcrm "$a" "$2";;
esac; done