美文网首页
Shell part1.1变量类型

Shell part1.1变量类型

作者: smileboytop | 来源:发表于2018-08-25 16:36 被阅读0次

shell 变量是用一个固定的字符串去表示不固定的内容,便于修改。

==变量类型==

自定义变量  环境变量    位置变量和预定义变量


=自定义变量=

A. 特性

1. 自定义变量(示例:ping01.sh引入变量)

定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115

引用变量: $变量名 或 ${变量名}

查看变量: echo $变量名; "set"可以查看所有变量(包括自定义变量和环境变量)

取消变量: unset 变量名

作用范围:

仅在当前shell中有效

B. 示例:

使用变量前。麻烦

ping -c1 192.168.100.10 &>/dev/null  && echo 192.168.100.10up || echo 192.168.100.10down

使用变量后,简洁

#!/bin/bash

ip=192.168.100.10

ping -c1 $ip &>/dev/null  && echo $ip  up ||  echo "$ip  down"

C. 变量赋值(定义变量):

1. 显式赋值:变量名=变量值

示例:

ip1=192.168.1.251

school="BeiJing 1000phone"

today1=`date +%F`

today2=$(date +%F)

2. read 从键盘读入变量值

read 变量名

read -p "提示信息: " 变量名

read -t 5 -p "提示信息: " 变量名  //-t 等待5秒,后超时

read -n 2 变量名            //-n  只记录几个字符

示例:

read -p "请输入您测试的IP地址:" ip

ping -c1 $ip  &>/dev/null  && echo  " $ip up" || echo  "$ip  down"


=环境变量(了解)=

定义环境变量: 方法一 export back_dir2=/home/backup

方法二 export back_dir1 将自定义变量转换成环境变量

引用环境变量: $变量名 或 ${变量名}

查看环境变量: echo $变量名 env 例如env |grep back_dir2

取消环境变量: unset 变量名

变量作用范围: 在当前shell和子shell有效 !!!

使变量开机、登陆生效,将变量放到~/.bash_profile

永久生效:写到四个登录脚本,/etc/profile ~/.baserc ~/.bash_profile /etc/bashrc


=位置变量和预定义变量(了解)=

语法命令    参数1 参数2 参数3 ....9以后特殊定义

$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ...

预先定义过的变量

$0 脚本名

$* 所有的参数

$@ 所有的参数

$# 参数的个数

$$ 当前进程的PID

$! 上一个后台进程的PID

$? 上一个命令的返回值 0表示成功

示例

准备工作:

# vim test.sh

#!/usr/bin/bash

echo "第2个位置参数是$2"

echo "第1个位置参数是$1"

echo "第4个位置参数是$4"

echo "所有参数是: $*"

echo "所有参数是: $@"

echo "参数的个数是: $#"

echo "当前进程的PID是: $$"

echo '$1='$1

echo '$2='$2

echo '$3='$3

echo '$*='$*

echo '$@='$@

echo '$#='$#

echo '$$='$$

演示结果如下:

[root@localhost ~]# chmod +x test.sh

[root@localhost ~]# ./1.sh  1 2 3 4 5 6 7 8 9

第2个位置参数是2

第1个位置参数是1

第4个位置参数是4

所有参数是: 1 2 3 4 5 6 7 8 9

所有参数是: 1 2 3 4 5 6 7 8 9

参数的个数是: 9

当前进程的PID是: 1946

$1=1

$2=2

$3=3

$*=1 2 3 4 5 6 7 8 9

$@=1 2 3 4 5 6 7 8 9

$#=9

$$=1946


$*和$@区别(资料)

shell中$*与$@的区别

关于$* 和 $@的 一点 认识 同是菜鸟一起学习

$*  所有的位置参数,被作为一个单词.

注意:"$*"必须被“”引用.

$@ 与$*同义,但是每个参数都是一个独立的""引用字串,

这就意味着参数被完整地传递,并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词.

注意:"$@"必须被“”引用.

$@ $* 只在被双引号包起来的时候才会有差异

双引号括起来的情况:

$*将所有的参数认为是一个字段

$@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 "2 3" 4  来发现差异

没有括起来的情况是$@和$*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 "2 3" 4  来发现差异


一个小例子 ,仅供参考

[Copy to clipboard] [ - ]CODE:#!/bin/bash

echo

index=1

echo "Listing args with\"\$*\":"

for arg in "$*"

do

echo "Arg #$index=$arg"

let "index+=1"

done

echo "所有的参数被认为是一个单词"

echo

index=1

echo "Listing args with \"\$@\":"

for arg in "$@"

do

echo "Arg #$index=$arg"

let "index+=1"

done

echo "所有的参数被认为是各个独立的单词"

echo

index=1

相关文章

  • Shell part1.1变量类型

    shell 变量是用一个固定的字符串去表示不固定的内容,便于修改。 ==变量类型== 自定义变量 环境变量 位...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • shell-变量定义

    shell是一种动态类型语言和弱类型语言,即shell中变量类型无需显示声明。shell中的变量是不区数据类型的,...

  • shell

    shell变量 变量类型:局部变量局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程...

  • Shell 中的系统变量简介

    Shell 中有两种变量类型:系统变量(环境变量)和用户自定义的变量(本地变量或Shell变量)。 如果要查看当前...

  • shell中级使用笔记

    目录 1、shell脚本的执行方法 2.shell的变量类型 3.shell特殊变量 4.变量子串的常用操作 5....

  • Bash变量的类型

    Bash变量的类型通常理解shell变量是弱类型的,或者无类型的,其实Bash变量是有类型的。 Bash变量一共有...

  • shell环境

    shell环境有什么? shell在环境中存储了两种基本类型的数据,它们是环境变量和shell变量。除了变量,sh...

  • 初学shell:变量、字符串、数组

    1. 变量 变量的类型1 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的...

  • Shell基础语法

    shell不是面向对象语言 变量 shell中赋值的变量值全部为字符串,不存在数字类型 变量分类全局变量 ≈ 环...

网友评论

      本文标题:Shell part1.1变量类型

      本文链接:https://www.haomeiwen.com/subject/vyegiftx.html