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

linux shell 语言基础(3)shell 特殊位置变量、source、sh、bash、./执行脚本的区别等

2018-12-13 14:03 483 查看

一、shell 特殊位置变量

$0 文件名及路径

$1~$n  添加到Shell的各参数值。$1是第1参数、$2是第2参数…

$* 传递给脚本的所有参数列表如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$#添加到shell 参数个数

$$ Shell本身的PID(ProcessID)

$? 最后运行命令结束的代码(还回值)

$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$- 使用Set命令设定的Flag一览

二、source、sh、bash、./执行脚本的区别

.  点命令,就是个点符号(从Bourne Shell而来)是source的另一名称

source 命令(从 C Shell 而来)执行bash shell的内置命令

bash /bin/bash命令功能要比sh强大

export可新增,修改或删除环境变量,供后续执行的程序使用。同时,重要的一点是,export的效力仅及于该次登陆操作。注销或者重新开一个窗口,export命令给出的环境变量都不存在了。

export PATH=/bin/bash:$PATH

(点 source bash sh ./执行的文件名)他们之间的区别

第一;点和source 执行方式是等价;即两种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 而在子shell进程中执行此脚本。

第二:bash sh (可以无执行权限)二者的执行文件不同

./ (必须有执行权限)三者执行方式是等价的;此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。

验证结果:

[root@localhost ~]#name=dangxu    //定义一般变量

[root@localhost ~]# echo ${name}

dangxu

[root@localhost ~]# cat test.sh   //验证脚本,实例化标题中的./*.sh

#!/bin/sh

echo ${name}

[root@localhost ~]# ls -l test.sh  //验证脚本可执行

-rwxr-xr-x 1 root root 23 Feb 6 11:09 test.sh

[root@localhost ~]# ./test.sh    //以下三个命令证明了结论一

[root@localhost ~]# sh ./test.sh

[root@localhost ~]# bash ./test.sh

[root@localhost ~]# . ./test.sh   //以下两个命令证明了结论二

dangxu

[root@localhost ~]# source ./test.sh

dangxu

[root@localhost ~]#

三、取变量或字符串的长度方法

echo $a|wc -L

echo ${#a}

expr length "$a"

四、shell数值运算方法

expr

(())

let

bc

$[]

awk

typeset

 

五、read 命令 是bash 内置 帮助:help read

-p 设置提示信息

-t设置输入等待时间,单位默认秒

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