【学习】linux shell 编程
2013-10-17 02:21
302 查看
近来 写了个shell 的脚本,本来觉得是一个比较简单的小功能,却花费了我不少时间。
总结起来有这么几点特别值得注意:
1)课本中的说明 要看全,我曾经在linux shell的课本中看到有这么一条,赋值操作 其前后都不能有空白,可是我却没怎么记住,总是会犯类似的错误
直到我使用了函数,我才明白这一点,因为函数和变量两者是类型的 比如我定义一个变量 list=(1 2);然后我也定义了一个函数 listB(){ cmd;}
当我呀执行这个函数的时候 就会是 listB 根本看不出这个东东是变量还是 函数
2)今天试了好多次,在linux shell 下定义的变量,值貌似确定了之后就不能再改变了,今天试了很多次都这样,不过这个地方我觉得很奇怪。有高手可以帮我解析下
3)求取数组的最后一个:这个东东,我在网上开始搜索的时候,没有搜索到,等我写好了一个函数之后,突然又搜索到了 中间使用了# ,具体原因不记得了,可有高手帮忙解释下。
4)写shell 脚本的时候,一定要添加上注释,那个地方有问题,就把问题前后的关键节点都做好注释,这样绝对是事半功倍,可以一举数得。
5)还有就是,当你给shell 编写的函数的参数 赋值的时候,不要赋值数组,当你赋值数组的时候,其实是将整个数组都散列开,然后一个一个元素赋值的,当你在shell 编写的函数中读取 你传递的数组的时候,你就会发现其实只是一个 数值。如果你想把一个数组传递到函数中,可以这样处理,就是在原来输入数组的地方的前后都加上"",这样就可以让添加的数组作为一个元素传递给 shell ,这样在函数内部就可以进行单独处理了。
6)shell 对于错误的提示,不会太精确,因此 需要有意识的去摸索,以及从之前的 学习和经验中进行总结。
总结起来有这么几点特别值得注意:
1)课本中的说明 要看全,我曾经在linux shell的课本中看到有这么一条,赋值操作 其前后都不能有空白,可是我却没怎么记住,总是会犯类似的错误
直到我使用了函数,我才明白这一点,因为函数和变量两者是类型的 比如我定义一个变量 list=(1 2);然后我也定义了一个函数 listB(){ cmd;}
当我呀执行这个函数的时候 就会是 listB 根本看不出这个东东是变量还是 函数
2)今天试了好多次,在linux shell 下定义的变量,值貌似确定了之后就不能再改变了,今天试了很多次都这样,不过这个地方我觉得很奇怪。有高手可以帮我解析下
3)求取数组的最后一个:这个东东,我在网上开始搜索的时候,没有搜索到,等我写好了一个函数之后,突然又搜索到了 中间使用了# ,具体原因不记得了,可有高手帮忙解释下。
4)写shell 脚本的时候,一定要添加上注释,那个地方有问题,就把问题前后的关键节点都做好注释,这样绝对是事半功倍,可以一举数得。
5)还有就是,当你给shell 编写的函数的参数 赋值的时候,不要赋值数组,当你赋值数组的时候,其实是将整个数组都散列开,然后一个一个元素赋值的,当你在shell 编写的函数中读取 你传递的数组的时候,你就会发现其实只是一个 数值。如果你想把一个数组传递到函数中,可以这样处理,就是在原来输入数组的地方的前后都加上"",这样就可以让添加的数组作为一个元素传递给 shell ,这样在函数内部就可以进行单独处理了。
6)shell 对于错误的提示,不会太精确,因此 需要有意识的去摸索,以及从之前的 学习和经验中进行总结。
相关文章推荐
- Centos 中使用 FTP 命令时出现“-bash: ftp: command not found”
- shell脚本编程-腾讯系统工程师面试题
- 文件服务之powershell应用
- 每天学点Linux--(Ubuntu下的shell版本查询)
- 获取服务器信息shell脚本:内存大小,cpu型号,系统发行版本,硬盘个数及大小等
- shell safely remove USB flash disk
- shell_ping其他机器
- php 执行shell命令的函数
- shell EOF 使用时的注意
- Powershell下计算时间
- shell获取时间函数和date用法参数
- shell数组小结
- Linux shell编程 7 ---- 变量和引用
- 【Hbase】 hbase shell基础和常用命令详解
- 110407 ShellSort
- linux shell 指令 诸如-d, -f, -e之类的判断表达式
- ubuntu 使用gnome shell后回复窗口最小化功能
- Linux shell的&&和||
- Windows shell 创建用户,并将service启动用户设为该用户
- 安卓手机使用ADB SHELL 命令乱码解决方案