您的位置:首页 > 运维架构 > Shell

Shell scripts简单入门

2016-05-01 14:12 609 查看
shell脚本其实就是纯文本文档,我们可以编辑这个文档,然后让这个档案来帮助我们一次执行多个指令,或者达成某些特定功能。

注意事项:

指令的执行时从上到下,从左到右

指令、选项与参数之间的多个空白都会被忽略掉

空白行也会被忽略掉,并且tab同样视为空格

如果读取到一个enter符号,就会尝试改行命令。可以用’\’来转义一个enter。

#后面是批注,不被执行

shell脚本执行方式

直接当做命令下达:该档案必须有rx权限,然后必须可以找到该命令,即要么通过绝对路径或相对路径,或者利用环境变量PATH

以bash程序来执行:通过bash shell.sh或许sh shell.sh来执行(shell.sh是我们写好的脚本)。

这时相当于一个子程序中执行,所以在shell.sh中自定义的变量不会保留到父程序当中。除非在脚本中加入export,把自定义变量加入到环境变量

3.用source命令来执行:这时就是在父程序中执行脚本

数据重定向

1.cat <> file

[j] <> file:表示读写方式打开file,若file不存在就创建它。然后创建一个fd为j的文件描述符,这个文件描述符指向file。若j不存在就默认为0。

2.digit1>&digit2

这个相当于dup2(digit2, digit1)

判断语句

test

例子:

test -e /de  /* 判断/de是否存在 */








[]

例子:

[ -z "$HOME" ] /*  注意空格! */


注意:

[]内的每个组件都要用空格隔开

括号中的变数,最好都以双引号括起来

[]中的常数,最好都以单或者双引号括起来

Shell脚本中的参数

默认参数 $0, $1…

例子:比如我一个脚本shell.sh,那么我输入./shell.sh 1 2 3

传给我这个脚本的默认参数是

./shell.sh         1           2        3
$0              $1          $2        $3


即我可以在我的脚本中$0来表示./shell.sh,$1来表示1。



shift

在脚本中使用

shift n
/* 表示上面的脚本参数要左移n个单位,例如
shift 1,那么现在的1要用$0来表示
*/


条件判断

利用if then

1.单层,简单条件判断

if [条件];then
//条件成立时的语句
fi


2.多重判断

if [条件1];then
//条件1成立时的语句
elif [条件2];then
//条件2成立时的语句
else
//条件1与条件2都不成立时的语句
fi


case判断

语法:



function

声明与定义一个function:

function fname()
{
/* 程序段内容 */
}


function也可以有参数

function print()
{
echo "the first argument $0"
/* 这里0代表的是传给print的第一个参数 */
}
print 1 2 3
/* 这里类似于传给我们shell的参数一样 1是第二个参数 */


循环

while do done, until don done





for do done



这里var可以是前面没有声明的

shell脚本中的这个for循环是知道循环次数的,即con的个数是固定的,所以是一种固定循环

第二种写法:



shell脚本的追踪与bug

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: