Shell学习:调试脚本
ver:1.0
调试脚本所花费的时间常常比编写代码还要多。所有编程语言都应该实现的一个特性就是在出现始料未及的情况时,能够生成跟踪信息。调试信息可以帮你弄清楚是什么原因使得程序行为异常。
使用sh -x调试运行带有sh -x选项的脚本可以打印出所执行的每一行命令以及当前状态。
123sh -x script.sh# 或者bash -x script.sh
例如test.sh
12345#!/bin/bash for i in {103..109}; do echo $idone
执行sh -x test.sh
123456789101112131415161718192021+ for i in '{103..109}'+ echo 103103+ for i in '{103..109}'+ echo 104104+ for i in '{103..109}'+ echo 105105+ for i in '{1 ...
Shell学习:语法规范
背景使用哪一种Shell可执行文件必须以 #!/bin/bash 和最小数量的标志开始。请使用 set 来设置shell的选项,使得用 <script_name>调用你的脚本时不会破坏其功能。
推荐使用:
1#!/usr/bin/env bash
env一般固定在/usr/bin目录下,而其余解释器的安装位置就相对不那么固定。
限制所有的可执行Shell脚本为bash使得我们安装在所有计算机中的shell语言保持一致性。
无论你是为什么而编码,对此唯一例外的是当你被迫时可以不这么做的。其中一个例子是Solaris SVR4包,编写任何脚本都需要用纯Bourne shell。
12[root@test ~]# echo $SHELL/bin/bash
什么时候使用Shell使用Shell需要遵守的一些准则:
如果你主要是在调用其他的工具并且做一些相对很小数据量的操作,那么使用Shell来完成任务是一种可接受的选择。
如果你在乎性能,那么请选择其他工具,而不是使用Shell。
如果你发现你需要使用数据而不是变量赋值(如 ${PHPESTATUS} ),那么你应该使用P ...
Shell学习:变量
变量类型变量可分为两类:环境变量(可以看作全局变量)和普通变量(局部变量)。
环境变量环境变量一般是指用export内置命令导出的变量,用于定义Shell的运行环境,保证Shell命令的正确执行。
按照语法规范,环境变量名的字母必须为大写。
同时,子Shell进程可以继承父Shell中的环境变量。
定义环境环境变量三个方式:
123456789# 方式一export ENV_VAR="haha"# 方式二ENV_VAR="haha"export ENV_VAR# 方式三declare -x ENV_VAR="haha"
通过env可以查看所有环境变量。
PATH环境变量PATH环境变量,它决定了Shell调用命令时的搜索路径。例如:
1export PATH=/usr/local/python/bin:$PATH
设置全局变量并永久生效可以配置在以下文件内:
12345/etc/profile/etc/bashrc# 若要在登录后初始化或显示加载内容,则把脚本文件放在/etc/profile.d/下即可(无须加执行权限)。 ...