Shell part1.1变量类型

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,100评论 1 19
  • Nginx 的配置文件使用的就是一门微型的编程语言,许多真实世界里的 Nginx 配置文件其实就是一个一个的小程序...
    SkTj阅读 4,197评论 0 7
  • 一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文...
    蒋_Sir阅读 9,148评论 1 4
  • 今天看到三公字评论里有人说了这句话。 纠结于墙内的所有弊端已经很久了,各种无可奈何无时无刻不在搅动着我的心弦,看了...
    逆水八爪鱼阅读 149评论 0 1
  • 步杜甫[秋兴八首]之二 云雨三星朗月斜,步罡踏斗借精华。 乾坤浩大真宾馆,步履匆忙本客槎。 浪涌翩然起海啸,诗存厚...
    日升月恒325阅读 196评论 1 1