배열 요소를 추가한 후 스크립트에 변경 사항 쓰기

배열 요소를 추가한 후 스크립트에 변경 사항 쓰기

그래서 dmenu에 북마크를 표시하고 Firefox에서 선택한 항목을 여는 다음 스크립트가 있습니다.

#!/bin/sh

declare -a bookmarks

bookmarks=(
https://www.reddit.com/
https://www.youtube.com/
https://github.com/
https://www.veganricha.com/
)

input="$2"
addnew() {
    bookmarks+=("$input")
}


while getopts a: option; do
    case "${option}" in
        a) addnew && exit 0 ;;
    esac
done

menu="dmenu -i -l 10 -p "Bookmarks""
items=$(printf '%s\n' "${bookmarks[@]}" | $menu )

[ -n "$items" ] && firefox $items || exit 0

-a 플래그를 사용하여 실행하면 목록에 항목을 추가할 수 있습니다(제 경우에는 마지막으로 복사한 항목).

./bookmarks -a $(xclicp -o)

항목을 추가합니다. 내가 원하는 것은 스크립트에 변경 사항을 작성하는 것입니다. 따라서 플래그를 사용하여 새로 추가된 항목이 -a스크립트에 기록됩니다.

많이 시도하고 검색했지만 알아낼 수 없었습니다. 누군가 도움을 줄 수 있기를 바랍니다.

미리 감사드립니다

답변1

스크립트 자체를 수정하는 대신 북마크를 별도의 파일에 넣고 해당 파일을 수정하세요.콰지모도 리뷰

스크립트를 다음과 같이 수정하면 됩니다.

#!/bin/sh

bookmark_file=~/bookmark_list

declare -a bookmarks

bookmarks=($(<$bookmark_file))

input="$2"
addnew() {
    echo $input >> $bookmark_file
}


while getopts a: option; do
    case "${option}" in
        a) addnew && exit 0 ;;
    esac
done

menu="dmenu -i -l 10 -p "Bookmarks""
items=$(printf '%s\n' "${bookmarks[@]}" | $menu )

[ -n "$items" ] && firefox $items || exit 0

북마크를 파일에 넣으면 변수를 변경하여 ~/bookmark_list북마크가 저장된 파일을 쉽게 변경할 수 있습니다bookmark_file

관련 정보