Linux에서 매개변수 간에 문자를 교환하거나 삽입하는 방법은 무엇입니까?

Linux에서 매개변수 간에 문자를 교환하거나 삽입하는 방법은 무엇입니까?

우리는 애플리케이션을 Solaris에서 Linux로 마이그레이션하고 있으며 첨부 파일(-a) 옵션을 사용할 때 Linux의 이메일 기능(mutt)이 다르게 작동합니다. 따라서 모든 셸 스크립트를 수정하는 대신 첫 번째 이메일이 나타나기 전에 "--"를 삽입하는 래퍼 스크립트를 작성할 계획입니다.

mutt -a "file1" -a "file2" -s "subject" [email protected] [email protected] < /dev/null

도착하다

mutt -a "file1" -a "file2" -s "subject" "--" [email protected] [email protected] < /dev/null

또한 이메일을 식별하는 데 사용되는 "--"를 무시하도록 mutt 기능을 전역적으로 수정할 수 있습니까?

답변1

삽입하려면 --:

set -- -a "file1"  -a "file2" -s "subject" [email protected] [email protected]

args=()
while getopts :a:s: opt; do 
    case $opt in 
        a) args+=( -a "$OPTARG" );; 
        s) args+=( -s "$OPTARG" );; 
    esac
done
shift $((OPTIND - 1))
args=( "${args[@]}" -- "$@" )

echo "${args[@]}"
-a file1 -a file2 -s subject -- [email protected] [email protected]

나는 당신을 이해하지 못합니다:

이메일을 식별하는 데 사용되는 "--"를 무시하도록 mutt 기능을 전역적으로 수정합니다.

mutt 매뉴얼 페이지는 --종료 옵션을 명시적으로 제공합니다.

관련 정보