做代码的网站,深圳专业的网站制作公司,用织梦建网站,专业的网站设计网络$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数#xff0c;与位置变量不同#xff0c;参数可超过9个 $$ 是脚本运行的当前… $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数与位置变量不同参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态0表示没有错误其他表示有错误 $-记录着当前设置的shell选项 • 区别* • 相同点都是引用所有参数
不同点只有在双引号中体现出来。假设在脚本运行时写了三个参数分别存储在12 3则* 等价于 “12 3传递了一个参数而“ 等价于 12 $3传递了三个参数 例子一 ##dels.sh echo number:$# echo scname:$0 echo first :$1 echo second:$2 echo argume:$ echo show parm list:$* echo show process id:$$ echo show precomm stat: $? 执行结果 [jihite]$ sh del.sh 1 2 3 number:3 scname:del.sh first: 1 second:2 argume:1 2 3 show parm list:1 2 3 show process id:21057 show precomm stat: 0 例子二 #!/bin/sh num$# name$0 echo number:$num echo scname:$name echo $0 echo $1 echo $2 for ((i0; i$num; i)) do echo $i done echo argume:$ for key in $ do echo $key done echo ----------------- for key in $ do echo $key done echo ----------------------------- for key2 in $* do echo $key2 done echo ----------------- for key2 in $* do echo $key2 done echo show process id:$$ cho echo show precomm stat: $? 执行结果 [jihite]$ sh del.sh a b number:2 scname:del.sh del.sh a b 0 1 argume:a b a b ----------------- a b ----------------------------- a b ----------------- a b show process id:23582 del.sh: line 37: cho: command not found show precomm stat: 127 问题 echo #0 #1 能不能用 $i 表示呢 $-记录着当前设置的shell选项himBH是默认值5个字母分别有各自含义。解释如下 hhashall打开这个选项后Shell 会将命令所在的路径记录下来避免每次都要查询。举例当h选项开启时如果将某个自定义命令从/usr/bin/目录下移动到/usr/local/bin/再运行会提示无此命令。而当通过set h将h选项关闭后上述情况就不会出现。 iinteractive-comments包含这个选项说明当前的 shell 是一个交互式的 shell。所谓的交互式shell就是输入命令后shell解释执行然后返回一个结果。在脚本中i选项是关闭的。 mmonitor打开监控模式就可以通过Job control来控制进程的停止、继续后台或者前台执行等。 Bbraceexpand大括号扩展。举例如下 lenovolenovo-DK ~ $ ls A_File lenovolenovo-DK ~ $ cp A_File{,.back_up} lenovolenovo-DK ~ $ ls A_File A_File.back_up 如果关闭B选项那么shell就不会将大括号扩展。 5. HhistoryShell 会把我们执行的命令记录下来可以通过 history 命令查看每一行是序号 执行的命令在 shell 退出时会将这些信息保存到~/.bash_history 文件中。如果H选项打开就可以展开历史列表中的命令可以通过!感叹号来完成例如!!返回上最近的一个历史命令!n返回第 n 个历史命令等等。