use*_*234 1 unix bash arguments
由于$#似乎没有在搜索引擎上正常运行,因此很难在此搜索答案.我很好奇为什么argv通常包含命令名称本身,而$#不是.
为了更清楚,如果我有一个名为testing.sh的脚本
#!/bin/bash
echo $#
Run Code Online (Sandbox Code Playgroud)
./testing.sh返回0而不是1.为什么?
bash遵循POSIX规范$#:
扩展为位置参数的十进制数.命令名(参数0)不应计入'#'给出的数字,因为它是一个特殊参数,而不是位置参数.
shell的参数接口与C语言完全不同.在bash方面,你可以定义
argv=( "$0" "$@")
argc=${#argv[@]}
Run Code Online (Sandbox Code Playgroud)
因为shell(明智地)将命令名与命令的参数分开.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |