在 bash shell 脚本中,$2 可以等于命令行上的多个参数,还是我需要 $3、$4 等...?

Emi*_*ile 0 scripting bash parameter

在下面的示例脚本中,它用于发送到一个或两个电子邮件地址,具体取决于哪个进程正在使用该脚本。我需要为额外的电子邮件地址添加 3 美元,还是 2 美元就足够了?

(
for file in /usr/app/tst/$1/MS_CASE_ST*.csv;
do
   uuencode ${file} $(basename ${file})
done
) | mailx -s "MS_CASE_ST*.csv file contains data. Please Research" $2 
Run Code Online (Sandbox Code Playgroud)

脚本 example.sh 如何执行的示例:

$ ./example.sh output email-1@web.com email-2@web.com
Run Code Online (Sandbox Code Playgroud)

Eri*_*ouf 7

$2将永远只是第二个参数。 $@是所有参数的数组,所以如果你想要第二个直到最后你可以这样做:

... | mailx -s "MS_CASE_ST*.csv file contains data.  Please research" "${@:2}"
Run Code Online (Sandbox Code Playgroud)

:2在被指定偏移参数扩展扩大时$@阵列