如何在 Linux 中的参数之间交换或插入字符?

如何在 Linux 中的参数之间交换或插入字符?

我们将应用程序从 Solaris 迁移到 Linux,当使用附件 (-a) 选项时,Linux 中的电子邮件功能 (mutt) 行为有所不同。因此,我们计划编写一个包装脚本,而不是修改所有 shell 脚本,该脚本将在第一个电子邮件出现之前插入“--”。

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 手册页明确提供了--结束选项。

相关内容