Bourne Shell 脚本如何知道它收到的第一个参数是''
(两个单引号?
我试过了
if [ -z "$1" ] ; then
echo "Wrong number of parameters"
fi
但似乎 $1
扩展为空字符串,"$1"
也是如此。
最佳答案
当您在命令行 shell 中键入 '' 时,会将其转换为参数 - 零长度字符串。 检查包含数字或参数的变量(在检查 -z "$1"之前)。
# check for any arguments
if [ "$#" -eq 0 ]; ...
# or -- has arguments and first one is ''
if [ "$#" -gt 0 -a -z "$1" ]; ...
有关 INTEGER 比较测试(-eq、-gt 等),请参阅“man test”。
编辑(基于对问题的评论):
在 Windows 上(你使用什么 shell?)你必须检查 ''(两个字符)(我认为 cmd.exe 以这种方式传递它)。在 Linux 上,您的脚本获得字符串长度为零的参数。
if [\( "$#"-gt 0 -a -z "$1"\) -o "$1"= "''"]; ...
关于linux - Bourne Shell - 如何识别第一个参数是 '',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411965/