$@ 或者 ${@} 会被替换成脚本的输入参数,比如 a.sh 如下内容#!/bin/kshecho "$@"则执行 a.sh 1 2 3 4 ,你会得到1 2 3 4 的打印。${paramter-word} 会被替换成变量 parameter 的值,如果 parameter 不存在,则被替换成 word。所以${@-'-i'} 就会被替换成脚本的输入参数 ,但是如果脚本没有输入参数,则替换成 -i