두 번째: 스크립트가 처음 실행될 때 스크립트가 사용자에게 변수를 묻는 메시지를 표시하도록 시도합니다.

두 번째: 스크립트가 처음 실행될 때 스크립트가 사용자에게 변수를 묻는 메시지를 표시하도록 시도합니다.

bash가 read와 sed를 결합하여 스크립트에 변수를 삽입하도록 해보세요. sed가 될 필요는 없지만 그런 것입니다.

이와 같이:

INTERNAL="`read -p "PATH " path` | sed -i '3i\$INTERNAL="/run/media/blah" blah.sh

파이썬을 구현할 수도 있습니다. 내 프로젝트는 셸로 작성되었지만 setup.py초기 실행에는 스크립트를 사용할 수 있습니다.

처음 실행하는 동안 변수를 설정하고 나중에 사용할 수 있도록 저장하는 스마트 스크립트를 만들려고 합니다. 이 경우 $HOME을 백업하는데 사용되는 외부/내부 장치의 경로이다. 스크립트에서 파일을 검색하도록 합니다. ( $HOME/.already_ran.txt스크립트가 이전에 실행되었는지 확인하기 위해 검색할 숨겨진 더미 파일) 파일을 찾을 수 없으면 사용자에게 변수(이 경우 경로)를 묻는 메시지가 표시됩니다. 나는 그들이 수동으로 스크립트를 열고 변수를 추가하는 것을 원하지 않습니다.

답변1

#!/bin/bash

conffile=$HOME/.myscript.env

if [[ -f $conffile ]]; then
    if ! source "$conffile"; then
        printf 'Error parsing configuration file "%s"\n' "$conffile"
        exit 1
    fi
else
    read -p 'Please enter device path: ' devpath

    # further steps to verify correctness of $devpath here
    # then...

    declare -p devpath >"$conffile"
fi

# the rest of the script using "$devpath" goes here

declare -p varnamebash변수 varname와 해당 현재 값을 정의하는 명령문이 출력됩니다 . 이를 파일에 기록하면 변수를 다시 만드는 데 사용할 수 있는 파일이 제공됩니다.

devpath일부 경로 이름을 포함하는 간단한 쉘 변수의 경우 다음 과 같이 /some/path작성하십시오.$conffile

declare -- devpath="/some/path"

if명령을 감싸는 - 문은 source누군가가 변조한 경우를 보장합니다.통사론쉘이 파일을 읽을 수 없고 스크립트가 종료되도록 파일을 저장하십시오.

declare -p나중에 재구성하기 위해 환경 변수, 배열 변수 등을 파일에 저장하는 데에도 사용할 수 있습니다.

관련 정보