shell-特殊变量

简介:
  1. 位置变量。

    $0 获取当前执行的shell脚本的文件名。如图:

    [root@localhost ~]# vim 0.sh 

    [root@localhost ~]# cat 0.sh 

    echo $0

    [root@localhost ~]# sh 0.sh

    0.sh

    [root@localhost ~]# 

  2. 如果我把它的完全路径输入的话就会这样,如图:


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

  /root/0.sh

   $1一直到$10是代表对应的第几个变量,如$1是对应的第一个变量的值,如果是$10的话,要把10用{}括号括号起来,如${10}

   如图:

    

    [root@localhost ~]# sh 0.sh zhouyu

    zhouyu

    顺便说一下,seq是发送从哪个值到哪个值,如命令

    seq -s " " 1 10

    是说发送1到10用空格分隔出来,如图:

    [root@localhost ~]# seq -s " $" 1 10

    1 $2 $3 $4 $5 $6 $7 $8 $9 $10

    $#是指命令行参数的总个数。如果给你命令行的参数有10个那么$#就是10

    dirname $0是把脚本的目录取出来

     basename $0是把名称取出来。

    如图:

    [root@localhost ~]# cat 0.sh 

    dirname $0

    basename $0

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

    /root

    0.sh

    [root@localhost ~]#

    可以去看看/etc/init.d/nfs文件对于这些参数的用法。

    $@和$*的区别

    $*是把所有的变量看成是一个变量,在加了""的情况下就是这样。如果不加""的话就会把每一      个变量都拆分出来,这样和$@是没有区别的 

    $@是把所有的变量都拆分出来,在加了""的情况下就是这样的。两者的区别可以看看下面的例      子

    [root@localhost zhouyu]# set "zhou yu" 1 3

    [root@localhost zhouyu]# for i;do echo $i;done

    zhou yu

    1

    3

    [root@localhost zhouyu]# for i in $*;do echo $i;done

    zhou

    yu

    1

    3

    [root@localhost zhouyu]# for i in $@;do echo $i;done

    zhou

    yu

    1

    3

    [root@localhost zhouyu]# for i in "$*";do echo $i;done

    zhou yu 1 3

    [root@localhost zhouyu]# for i in "$@";do echo $i;done

    zhou yu

    1

    3

    有时候我们要删除目录的时候,就是用变量删除的,可是如果没有变量或者我们定义的变量突然失效的话,那有可能会从/开始删除,这样的话就会对系统造成影响。所以我们可以用以下命令来确保我们的变量存在

${zhouyu:=/tmp}

上面那个的意思就是说如果$zhouyu变量不存在,就会赋予它一个值,这个值为/tmp




本文转自 周子琪 51CTO博客,原文链接:http://blog.51cto.com/izhouyu/1886164
相关文章
|
Shell Python
python 和shell 变量互相传递
python 和shell 变量互相传递
405 0
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
1117 2
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
320 1
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
Java Shell Linux
Shell 变量设置
Shell设置变量
351 5
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
431 10
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
998 1
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
242 0