此问题在此处已有答案:
Propagate all arguments in a Bash shell script(12个答案)
关闭21天前.
#!/bin/bash
function main {
[ -z "$1" ] && { getPID "$@"; } || $1
}
getPID() {
a=$1
b='service'
if [[ $a == 'contains' ]]; then
PID=$(pgrep -f $b)
elif [[ $a == 'exact' ]]; then
PID=$(pgrep -x $b)
fi
echo "$PID"
}
main "$@"
**命令:**我正在运行调用函数:./script.sh getPID包含
**输出:**输出为空,变量a的值为空
1条答案
按热度按时间bvjxkvbb1#
当您在
main
中调用$1
时(当$1
包含字符串getPID
时),它只调用getPID
*,不带参数 *。要将其他参数传递给
getPID
,应该使用"$@"
而不是$1
。