bash 변수가 실행 간에 유지될 수 있나요?

bash 변수가 실행 간에 유지될 수 있나요?

losetup -f유휴 루프 장치를 쿼리하는 초기화 스크립트를 생성하려고 합니다 . init 스크립트에는 일부 항목을 설정하기 위해 자유 루프 장치를 start()쿼리하는 파일과 .losetup -fstop()

내가 이해할 수 없는 문제는 출력을 losetup -f영구 물질에 저장하여 사용자의 놀라움(환경 변수 덮어쓰기 등)을 방지하여 stop()이 특정 초기화 스크립트가 호출될 때마다 할당된 루프 장치에 액세스할 수 있도록 하는 방법입니다. 에게 .

어떤 루프 장치를 지속적으로 할당해야 하는 이유는 루프 장치를 처리할 2~3개의 초기화 스크립트(초기화 스크립트당 최소 2개의 루프 장치)가 있고 각 초기화 스크립트가 자체적으로 추적해야 하기 때문입니다.

여러 출력을 losetup -f파일에 할당하여 분리/사용해야 할 때 루프에서 다시 읽을 수 있도록 해야 합니까? 그렇다면 그러한 데이터의 표준 디렉토리는 무엇입니까?

답변1

의견을 바탕으로 솔루션을 만들었습니다.

start() {
    loop=$(losetup -f)
    echo "$loop" > /var/run/init-script-name.loop
    #continue to use $loop as the reference to your loop device
}

stop() {
    loop=$(cat /var/run/init-script-name.loop)
    rm /var/run/init-script-name.loop
    #continue to use $loop as the reference to this scripts loop device
}

이를 통해 각 초기화 스크립트는 나중에 할당된 장치를 가져와야 하는 경우 참조할 수 있는 파일에 루프 장치를 저장할 수 있습니다. 여러 장치가 필요한 경우 모든 장치를 파일(한 줄에 하나씩)에 표시하고 이를 사용하여 while read -r /path/to/file반복할 수 있는 배열과 같은 구조를 생성할 수 있습니다.

답변2

어쩌면 이것이 도움이 될 것입니다.

변수 저장,

declare -p var_name another_var more_vars > path_to_init_file

검색,

source path_to_init_file

답변3

방금 이 훌륭하고 간단한 프로젝트(재작성된 포크)를 발견했습니다. 완벽해 보이네요.

https://github.com/imyller/kv-sh

  • 작은 키-값 데이터베이스
  • 구성 가능한 데이터베이스 디렉터리(기본값 ~/.kv-sh: )
  • 함수를 가져와서 사용$ . ./kv-sh
  • 전체 데이터베이스 덤프/복원
  • 보조 읽기 전용 기본 데이터베이스 지원
    . ./kv-sh                  # import kv-sh functions (use default database directory; see
                                 configuration environment variables for available options)
    kvset <key> <value>        # assign value to key
    kvget <key>                # get value of key
    kvdel <key>                # delete key
    kvexists <key>             # check if key exists
    kvkeys {-l|-d|-a}          # list all keys (-l local only, -d default only, -a all (default))
    kvlist {-a}                # list all key/value pairs (-a all keys, including default)
    kvdump {-a}                # database dump (-a all keys, including default)
    kvimport                   # database import (overwrite)
    kvrestore                  # database restore (clear and restore)
    kvclear                    # clear database

기본 데이터베이스

kv-sh보조 읽기 전용 기본 데이터베이스를 지원합니다. 활성화된 경우 로컬 값이 지정되지 않은 경우 데이터베이스의 기본 키-값 쌍을 반환합니다.

설정을 통해 기본 데이터베이스를 활성화합니다 DB_DEFAULTS_DIR.

DB_DIR="/tmp/.kv" DB_DEFAULTS_DIR="/tmp/.kv-default" . ./kv-sh

관련 정보