shell脚本命令行参数里的空白符

看一个小脚本

#!/bin/bash
#demonstarting the shift command
count=1
while [ -n "$1" ] ; do
        echo "Parameter #$count=$1"
        count=$[ $count + 1 ]
        shift
done
echo
echo

这个脚本首先测试第一个参数是否存在 -n "$1" ,存在的话打印,然后所有参数向左移动一个位置,变量$1的值会被覆盖,变量$0(也就是程序名)是不会改变的

那么,来看看

注意看上面两条执行命令反白的地方,第一条是用Tab键自动补全的,后面有一个空格。第二条命令后面没有那个空白符

看看执行结果,与上面两条命令分别对应

诶嘿,可还是有打印一次啊

时间: 2024-10-11 04:34:57

shell脚本命令行参数里的空白符的相关文章

shell和命令行参数有关的变量

$0 ----- 当前程序的名称,实际上是一个内部参数,不同于$1,$2....因为它必须有! $# ---- 传递给程序的总的参数数目,也就是那个传说中的数组大小 $? ---- 上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值. $* ---- 传递给程序的所有参数组成的字符串. [email protected] 以"参数1" "参数2" ... 形式保存所有参数 $$ ---- 本程序的(进程id号)pid $! --

powershell脚本,命令行参数传值,并绑定变量的例子

这是小技巧文章,所以文章不长.但原创唯一,非常重要.我搜了下,还真没有人发 powershell怎样 [命令行 参数 绑定],所以我决定写成博客. 搜索关键字如下: powershell 命令行 参数 绑定 powershell 传入 参数 powershell 传递 参数 powershell CmdletBinding powershell 命令行 参数 绑定 传入 传递 parameter CmdletBinding powershell 传教士 原创文章.始于 2016-09-26 允许

每日一测1(带命令行参数运行)

怎么让程序带参数运行以便适应不同的测试环境? 命令行参数在程序中的配置位置是在项目-属性-启动选项-命令行参数里 可以通过Main方法传入命令行参数(控制台程序本身就已带), 传入一个string类型的数组.也可以通过System.Environment这个类取出 static void Main(string[] args)  { for (int i = 0; i < args.Length; i++)      //取出来的直接是参数,没有路径 { Console.WriteLine(&quo

在VS中添加命令行参数argv[]

英文版: 菜单Project -> Properties -> Configuration Properties -> Debugging 在Command Arguments里填上即可. 中文版: 菜单[项目] -> 属性页 -> 配置属性 -> 调试 在[命令行参数]里填上即可. 记得不同参数之前用空格隔开. argc不用自己设置.argc指的就是argv中的元素数

【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, [email&#160;protected], $?, $$和命令行参数

前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运行结果 29949 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数. [email protected] 传递给脚本或函数

Shell特殊变量:Shell $0, $#, $*, [email&#160;protected], $?, $$和命令行参数

变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运行结果 29949 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数. [email protected] 传递给脚本或函数的所有参数.被

shell 命令行参数(基本)

命令行参数 \$0 表示程序名. \$1 至 \$9则是位置参数. \$# 表示参数的个数. \$* 将所有参数当做一个整体来引用\[email protected] 把每个参数作为一个字符串返回,可以使用for循环来遍历\$? 最近一个执行的命令的退出状态.0表示执行成功\$_ 上一个命令的最后一个参数.使用快捷键 ESC+. 也是这个效果 位置参数 位置参数不止9个,更多的参数也是一样支持的.只是要使用\${10}这样的形式引用. \$1 和 \${1}的效果是一样的. 不用花括号的话,\$

shell 命令行参数(getopt和getopts)

这里还有上一篇,这部分是基础:https://blog.51cto.com/steed/2443313 getopt 命令 使用getopt命令,可以解析任何命令行选项和参数,但是用法比较复杂.getopt的命令用法如下: $ getopt --help 用法: getopt optstring parameters getopt [options] [--] optstring parameters getopt [options] -o|--options optstring [option

Shell特殊变量:$0, $#, $*, [email&#160;protected], $?, $$和命令行参数

变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数. 例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传递给脚本或函数的所有参数. [email protected] 传递给脚本或函数的所有参数.被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到. $? 上个命令的退出状态,或函数的