tas*_*517 2 linux bash arguments if-statement echo
我想看看是否提供了参数.但我不知道为什么这段代码不起作用.我究竟做错了什么?
if ![ -z "$1" ]
then
echo "$1"
fi
Run Code Online (Sandbox Code Playgroud)
我们问shellcheck:
In file line 1:
if ![ -z "$1" ]
^-- SC1035: You need a space here.
Run Code Online (Sandbox Code Playgroud)
换一种说法:
if ! [ -z "$1" ]
then
echo "$1"
fi
Run Code Online (Sandbox Code Playgroud)
如果,根据你的评论,它仍然不起作用,你碰巧从一个函数执行此操作,函数的参数将掩盖脚本的参数,我们必须显式传递它们:
In file line 8:
call_it
^-- SC2119: Use call_it "$@" if function's $1 should mean script's $1.
Run Code Online (Sandbox Code Playgroud)
您可以检查给定参数的数量。$#表示传递给脚本或函数的参数数量 - 或包含参数的数组的长度。如果它为零,则没有传递任何参数。这是关于位置参数的一般读物。
$ cat script
#!/usr/bin/env bash
if (( $# == 0 )); then
echo "No parameters provided"
else
echo "Number of parameters is $#"
fi
Run Code Online (Sandbox Code Playgroud)
结果:
$ ./script
No parameters provided
$ ./script first
Number of parameters is 1
$ ./script first second
Number of parameters is 2
Run Code Online (Sandbox Code Playgroud)
如果您想使用函数检查传递给脚本的参数,那么您必须向函数提供脚本参数:
$ cat script
#!/usr/bin/env bash
_checkParameters()
{
if (( $1 == 0 )); then
echo "No parameters provided"
else
echo "Number of parameters is $1"
fi
}
_checkParameters $#
Run Code Online (Sandbox Code Playgroud)
这将返回与第一个示例相同的结果。
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |