问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在shell脚本中使用变量

发布网友 发布时间:2022-04-23 14:31

我来回答

4个回答

热心网友 时间:2022-04-09 08:39

1、linux shell中的变量一般定义格式为:var=value。其中var是变量名称,=是赋值,value是给变量赋的值。比如下面的变量定义。

a=12; 
b="hello world"

2、注意变量名称的第一个字符不可以是数字,但是可以是下划线。如下示例则为非法的变量名。

3、要使用变量的值,在变量前面加上$符号即可。比如下面的示例:

123=123 //这是错误的变量名称
_123=123//这是合法的。

热心网友 时间:2022-04-09 09:57

  系统定义的变量:

这些变量由操作系统(Linux)自身创建并维护,通常它们以大写字母定义,我们可以通过命令“$ set”来查看这些变量。下面列出了部分系统定义的变量:

系统定义的变量
意义

BASH=/bin/bash
Bash Shell 名称

BASH_VERSION=4.1.2(1)
Bash 版本

COLUMNS=80
你的屏幕宽度(列数)

HOME=/home/linuxtechi
用户家目录

LINES=25
你的屏幕高度(行数)

LOGNAME=LinuxTechi
当前登录用户的名字

OSTYPE=Linux
操作系统类型

PATH=/usr/bin:/sbin:/bin:/usr/sbin
可执行文件搜索路径

PS1=[\u@\h \W]\$
命令行提示符

PWD=/home/linuxtechi
当前工作目录

SHELL=/bin/bash
Shell 名称

USERNAME=linuxtechi
当前登录的用户名

要打印以上变量的值,可以使用echo command命令,如下:
# echo $HOME# echo $USERNAME

我们可以通过在环境变量名前前置一个美元符号来从你的脚本里输入环境变量。请看下面脚本演示:
$ cat myscript #!/bin/bash# display user information from the system.echo “User info for userid: $USER”echo UID: $UIDecho HOME: $HOME

注意:echo命令中的环境变量在脚本运行时会被它们的值替代。同时注意,我们可以再第一个字符串的双引号中放置$USER系统变量,而shell脚本仍然可以明白我们的意思。然而,该方法有一个缺点。看下面这个例子:
$ echo “The cost of the item is $15”The cost of the item is 5

很明显,那不是我们说希望的。无论何时,当脚本遇见引号中的美元符号时,它都会认为你是在调用一个变量。在本例中,该脚本试着显示变量$1(而这个变量并没有定义),然后显示数字5。要显示实际上的美元符号,你必须前置一个反斜线字符:
$ echo “The cost of the item is \$15”The cost of the item is $15

那样好多了。反斜线允许shell脚本将美元符号解释成为实际的美元符号,而不是变量。

用户定义的变量:

这些变量由用户定义。shell脚本允许我们在脚本中设置并使用我们自己的变量。设置变量允许你临时存储数据并在脚本中使用,让shell脚本看起来像一个真正的计算机程序。

用户变量可以是任何不超过20个的字母、数字或者下划线字符的文本字符串(LCTT 译注:变量只能以字母或下划线开头)。用户变量是大小写敏感的,因此,变量Var1和变量var1是不同的变量。这个小规则常常让新手编写脚本时麻烦重重。

我们可以通过等于号为变量赋值。变量,等于号和值(对于新手又是个麻烦的地方)之间不能有空格。下面是几个给用户变量赋值的例子:
var1=10var2=-57var3=testingvar4=“still more testing”

shell脚本为变量值自动确定数据类型。shell脚本内定义的变量会在脚本运行时保留它们的值,当脚本完成后则删除这些值。

就像系统变量一样,用户变量也可以使用美元符号来调用:
$ cat test3#!/bin/bash# testing variablesdays=10guest="Katie"echo "$guest checked in $days days ago"days=5guest="Jessica"echo "$guest checked in $days days ago"$

运行脚本会产生以下输出:
$ chmod u+x test3$ ./test3Katie checked in 10 days agoJessica checked in 5 days ago$

每次变量被调用,它都会变成了当前分配给它的值。有一点很重要,当调用一个变量值时,你使用美元符号,但是当为一个变量分配一个值时,你不能用美元符号。下面用例子来说明:
$ cat test4#!/bin/bash# assigning a variable value to another variablevalue1=10value2=$value1echo The resulting value is $value2$

当你使用赋值语句中value1变量的值时,你仍然必须使用美元符号。这段代码产生了如下输出:
$ chmod u+x test4$ ./test4The resulting value is 10$

如果你忘了美元符号,而又让value2赋值行看起来像这样:

value2=value1

你会获得下面的输出:
$ ./test4 The resulting value is value1$

没有美元符号,shell解释变量名为普通文本字符串,这极有可能不是你想要的。

在shell变量中使用反引号(`):

反引号允许你将shell命令的输出赋值给变量。虽然这似乎没什么大不了,但它是脚本编程中主要的构建基块。你必须使用反引号将整个命令行包含起来:
**testing=`date`**

shell会在反引号中运行命令,然后将输出结果赋值给变量testing。下面的例子给出了如何使用一个常规shell命令的输出结果来创建一个变量:
$ cat test5#!/bin/bash# using the backtick charactertesting=`date`echo "The date and time are: " $testing$

变量testing接收来自date命令的输出结果,而它又在echo语句中被调用。运行脚本会产生如下输出:
$ chmod u+x test5$ ./test5The date and time are: Mon Jan 31 20:23:25 EDT 2011

注:在bash中,你也可以选用$(...)语法来替换反引号(`),它有个优点就是可以重用(re-entrant)。

例:
$ echo " Today’s date & time is :" $(date)Today’s date & time is : Sun Jul 27 16:26:56 IST 2014

热心网友 时间:2022-04-09 11:32

首先定义变量,然后使用变量
假设你定义了
VAR=5
然后你就可以使用这个VAR变量了
echo $VAR
显示的就是5

热心网友 时间:2022-04-09 13:23

shell变量

1     定义变量

★定义变量时,变量名不加美元符号($),如:

your_name="runoob.com"

★变量名和等号之间不能有空格,这可能其他编程语言都不一样。

★变量名的命名须遵循如下规则:

☆命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

☆中间不能有空格,可以使用下划线(_)。

☆不能使用标点符号。

☆不能使用bash里的关键字(可用help命令查看保留关键字)。

★Shell 变量名示例:

RUNOOB、LD_LIBRARY_PATH、_var、var2

★无效的变量命名示例:

?var=123、user*name=runoob

★除了显式地直接赋值,还可以用语句给变量赋值,如:

for file
in `ls /etc`

for file
in $(ls /etc)

以上语句将 /etc 下目录的文件名循环出来。

2     使用变量

★使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:

your_name="qinjx"

echo
$your_name

echo
${your_name}

★变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

for
skill in Ada Coffe Action Java; do

    echo "I am good at
${skill}Script"

done

☆如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

☆推荐给所有变量加上花括号,这是个好的编程习惯。

★已定义的变量,可以被重新定义,如:

your_name="tom"

echo
$your_name

your_name="alibaba"

echo
$your_name

这样写是合法的。

3     只读变量

★使用readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

★下面的例子尝试更改只读变量,结果报错:

#!/bin/bash

myUrl="http://www.google.com"

readonly myUrl

myUrl="http://www.runoob.com"

运行脚本,结果如下:

/bin/sh: NAME: This
variable is read only.

4     删除变量

★使用unset 命令可以删除变量。语法:

unset variable_name

★变量被删除后不能再次使用。unset 命令不能删除只读变量。

★实例

#!/bin/sh

myUrl="http://www.runoob.com"

unset myUrl

echo $myUrl

☆以上实例执行将没有任何输出。

5     变量类型

★运行shell时,会同时存在三种变量:

☆局部变量 :局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

☆环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

☆shell变量: shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

6     Shell 字符串

★字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

★单引号

str='this is a string'

☆单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

☆单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

★双引号

your_name='runoob'

str="Hello, I know
you are \"$your_name\"! \n"

echo -e $str

输出结果为:

Hello, I know you are
"runoob"!

☆双引号里可以有变量

☆双引号里可以出现转义字符

★拼接字符串

your_name="runoob"

☆使用双引号拼接

greeting="hello,
"${your_name}" !"

greeting_1="hello,
${your_name} !"

echo $greeting  $greeting_1

输出结果为:

hello, runoob ! hello,
runoob !

☆使用单引号拼接

greeting_2='hello, '${your_name}'
!'

greeting_3='hello,
${your_name} !'

echo $greeting_2  $greeting_3

输出结果为:

hello, runoob ! hello,
${your_name} !

★获取字符串长度

string="abcd"

echo ${#string}

☆输出 4

★提取子字符串

☆以下实例从字符串第 2 个字符开始截取 4 个字符:

string="runoob is a
great site"

echo ${string:1:4}

☆输出 unoo;

★查找子字符串

☆案例:查找字符 i或 o 的位置(哪个字母先出现就计算哪个):

string="runoob is a
great site"

echo `expr index
"$string" io` 

☆输出 4

☆以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。

7     Shell 数组

★bash支持一维数组,不支持*数组,并且没有限定数组的大小。

类似于 C 语言,数组元素的下标由 0 开始编号。

★获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

★定义数组

☆在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(值1 值2 ... 值n)

☆案例:

array_name=(value0
value1 value2 value3)

或者

array_name=(

value0

value1

value2

value3

)

☆还可以单独定义数组的各个分量:

array_name[0]=value0

array_name[1]=value1

array_name[n]=valuen

☆可以不使用连续的下标,而且下标的范围没有*。

★读取数组

☆读取数组元素值的一般格式是:

${数组名[下标]}

☆例如:

valuen=${array_name[n]}

☆使用 @ 符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}

★获取数组的长度

☆获取数组长度的方法与获取字符串长度的方法相同;

☆取得数组元素的个数

length=${#array_name[@]}

# 或者

length=${#array_name[*]}

☆取得数组单个元素的长度

lengthn=${#array_name[n]}

8     Shell 注释

★以 #开头的行就是注释,会被解释器忽略。

★案例:# 这是一个注释

★通过每一行加一个 # 号设置多行注释。

★如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

shell如何定义变量

1. 使用等号赋值 在Shell中,变量定义的基本语法是使用等号将值赋给变量名。例如:bash myVariable="Hello, World!"这里,"myVariable"是变量名,"Hello, World!"是赋给变量的值。定义变量后,可以通过在变量名前加美元符号来引用该变量的值。例如,使用echo命令输出变量的值:bash echo $myVariable ...

Linux shell变量的用法

Linux shell变量的用法分为几个部分。首先,理解变量替换。新建vartest变量并赋值,执行替换操作。从变量开头或尾部规则匹配,删除符合最短或最长数据。打印PATH内容,显示变量内容。替换操作,依据匹配的旧字符串,用新字符串替换。接下来,探讨字符串处理技巧。计算字符串长度,获取子串索引位置,获取子串长度...

Shell中的变量和环境变量

当在Shell脚本中引用变量时,通过$符号引用其值。例如,`$variable`将输出变量的值。特殊变量则用于获取脚本信息或命令行参数,是Shell编程中不可或缺的工具。环境变量则为Shell会话全局可见,影响着脚本执行和系统配置。Shell启动时加载预定义环境变量,自定义配置亦可通过export命令实现。查看环境变量值,使...

如何在shell脚本中使用变量

1、linux shell中的变量一般定义格式为:var=value。其中var是变量名称,=是赋值,value是给变量赋的值。比如下面的变量定义。a=12; b="hello world"2、注意变量名称的第一个字符不可以是数字,但是可以是下划线。如下示例则为非法的变量名。3、要使用变量的值,在变量前面加上$符号即可。比如下面的...

shell如何定义变量

csh系列的Shell中需要使用setenv name "xxx"命令来完成。总结来说,bash和csh对变量的定义和环境变量的管理都有其特定的语法,理解并掌握这些差异是Shell编程中不可或缺的一部分。在实际操作中,根据所使用的Shell类型,选择正确的命令进行变量定义和环境变量设置至关重要。

Linux Shell脚本系列教程:使用函数添加环境变量

一、简介 环境变量通常用于存储路径列表,这些路径用于搜索可执行文件、库文件等。例如:$PATH、$LD_LIBRARY_PATH,它们通常看起来像这样:代码如下:PATH=/usr/bin;bin LD_LIBRARY_PATH=/usr/lib;lib 这意味着只要shell需要运行二进制可执行文件时,它会首先查找/usr/bin,然后查找/bin。在ubuntu14.04...

shell如何执行变量中的语句?

有两种方法 test=`echo 'hello world'` 看清楚` 和' 是有区别的,`是反斜号,键盘1左边的键 test=$(echo 'hello' world) 这个就比较直观,不过一些unix shell不支持这种写法

linux shell脚本,怎样变量传递执行结果

1、shell一般都是放在/bin或者/user/bin目录下,我们可以使用命令cat /etc/shells命令,查看当前linux系统可用的shell是什么。2、我们使用echo $SHELL命令来查看当前系统的默认Shell,并且输出Shell的环境变量。3、shell中用于输出字符串的echo命令,我们将需要输出的字符串用双引号包裹,在双引号没有成对...

如何在Shell中定义和访问数组变量?

}"或"${array_name[@]}",这两种方法将返回数组中所有值的列表。以示例脚本"#!/bin/sh"为例,运行后将分别输出"Zara Qadir Mahnaz Ayan Daisy"和"Zara Qadir Mahnaz Ayan Daisy"。总之,Shell数组是一个强大的工具,通过它,程序员可以更有效地管理多个相关变量,提高代码的组织性和可读性。

shell中字符串拼接的几种方式?

1. 使用变量拼接字符串 在Shell脚本中,可以直接使用变量来拼接字符串。例如:shell str1="Hello"str2="World"result=$str1$str2 echo $result # 输出:HelloWorld 这里,`$str1`和`$str2`是两个字符串变量,将它们放在一起即可实现拼接。2. 使用引号拼接字符串 在Shell中,引号内的内容被视为...

如何引用shell脚本中的变量 shell脚本调用shell脚本 shell脚本使用变量 shell脚本内部变量的使用 shell脚本中的变量 shell脚本中的变量类型 shell脚本引用之前的变量 shell中使用变量 shell中调用python脚本
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
帮忙起个带"月"字的游戏名字. 4个字游戏名字 4个字游戏名字有哪些 为什么我用的QQ号登qq头像是以前的,Q秀是以前的,还换不了头像加不了好 ... ...1. 一听说有戏看,人们纷纷从四面八方赶了过来。()2.东一块,_百度... ready2download中文什么意思谁能帮我翻译一下 常州火车站 嵊泗 常州火车站到杭州的火车和票价 从常州火车站下来后做什么车可以到达恐龙园 锦觅是不是对旭凤死心了 搜狗打字法 为什么有时候打出来字不按空格键它会不见,过一会又用英文小... linux shell脚本中,数组名称是一个变量,怎么打印出它里面的元素? 信用卡三年没还后果 我的建行信用卡逾期三年未还款怎么办 我欠了光大银行信用卡200000已经三年没还了现在实在是还不起了怎么吧? 我欠工商银行信用卡快三年了一直没还 欠工商银行信用卡有三年多了一直都没还会有什么影响吗? 银行信用卡超过3年没还钱会怎么样? 欠信用卡三年没还了怎么办 中国银行信用卡,3年没还会有什么后果 我的贷款一年到期逾期三年未还,银行还能起诉我吗? 信用卡欠款1万元3年没还银行怎么处理? 个人在银行贷款三年多未还,可以直接到银监会协商解决违约金与滞纳金吗? 广发银行信用卡3年没还,第三方说可以申请减免,申请后的金额我还了,剩下的银行会还进去,是真的吗。 银行贷款以有三年没有还款还须要还吗? 银行贷款一年期的,三年未还贷款,后果如何? 我平安银行欠款四万多三年多没还了,银行起诉了。我还能办工商银行的 - 信息提示 信用卡逾期三年,现在要还款怎么还?去哪里还?还完后不会再找我要吧?有没有什么凭证 今年新买车,不小心撞了,走得保险,修起来大概几千块钱,明年保险要多拿多少 发生事故后如果走保险的话,第二年保费会上涨多少? 编写一个shell脚本输出$HOME,$0,$#,$$变量的值 shell脚本怎么输出一行两个值并定义两个变量 shell脚本,我从root用户切换到普通用户之后,新定义了一个变量,但打印变量的值是空的,怎么回事? shell脚本怎么输出前两个变量的和 shell脚本中如何给变量赋值,为什么不能正确打印结果,另外如何给日志文件名换成动态的,也就是每一天的 写shell 脚本的时候,怎样把标准输出定义到变量上(不是文件) 创建一个SHELL脚本,输出helloworld,粘贴shell里的编写内容+并以相对... linux shell 如何把txt文本中每一行提取出来赋值给一变量,再输出这一变量 shell脚本如何实现逐行输出? shell中的$取变量操作 shell中如何把标准输出写入文件名为变量的文件 苹果平板屏幕失灵了怎么办? 成都ipad平板电脑屏幕失灵了需要怎么办? 平板电脑屏幕失灵是怎么回事? 新买的平板屏幕失灵? 瑞蓝玻尿酸打哪个部位合适 玻尿酸婕尔和瑞蓝哪个好? 玻尿酸哪个品牌好一点安全一点? 玻尿酸哪个品牌最好? 北京瑞兰玻尿酸哪家的最好