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 varname
bash
변수 varname
와 해당 현재 값을 정의하는 명령문이 출력됩니다 . 이를 파일에 기록하면 변수를 다시 만드는 데 사용할 수 있는 파일이 제공됩니다.
devpath
일부 경로 이름을 포함하는 간단한 쉘 변수의 경우 다음 과 같이 /some/path
작성하십시오.$conffile
declare -- devpath="/some/path"
if
명령을 감싸는 - 문은 source
누군가가 변조한 경우를 보장합니다.통사론쉘이 파일을 읽을 수 없고 스크립트가 종료되도록 파일을 저장하십시오.
declare -p
나중에 재구성하기 위해 환경 변수, 배열 변수 등을 파일에 저장하는 데에도 사용할 수 있습니다.