временное изменение IFS перед циклом for

How can I know which process is using my swap space on my Linux system?

Пространство подкачки не обязательно используется конкретными процессами.

More precisely: Where are consumed each of those 244 MB of swap?

Файлы, хранящиеся в файловых системах на основе tmpfs, могут использовать их(tmpfsсначала используют ОЗУ в качестве заднего -конца, но, чтобы не тратить ОЗУ, могут разбивать на страницы блоки области подкачки, которые активно не используются ).

Проверьте вывод:

df -ht tmpfs
2
16.08.2020, 20:02
2 ответа

forявляется зарезервированным словом и, как таковое, следует специальным правилам:

The following words shall be recognized as reserved words:

! { } case do done elif else esac fi for if in then until while

This recognition shall only occur when none of the characters is quoted and when the word is used as:

  • The first word of a command

  • The first word following one of the reserved words other than case, for, or in

  • The third word in a case command (only in is valid in this case)

  • The third word in a for command (only in and do are valid in this case)

Если вы попытаетесь

IFS=":" for i in $PATH; do echo $i; done

то по приведенным выше правилам это не цикл for, так как ключевое слово не первое слово команды. Но вы можете получить желаемый результат с помощью

tr ':' '\n' <<< "$PATH"               #Bash, Ksh, Zsh
printf "%s\n" "$PATH" | tr ':' '\n'   #Any standard shell

, где trзаменяет каждый :новой строкой.


Возможно, вы знакомы с этим допустимым подходом.:

while IFS= read -r line; do

while— первое слово команды, а назначение IFSприменяется к read, так что все ок.

5
18.03.2021, 23:12

Назначение макросов оболочки разрешено перед простыми командами (, такими как read), но не перед составными операторами, такими как for.

Рекомендуется использовать:

OIFS=$IFS
IFS=:
some complex commands
IFS=$OIFS
-2
18.03.2021, 23:12

Теги

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