当前位置:首页 » 编程软件 » shell脚本变量加

shell脚本变量加

发布时间: 2023-02-18 00:42:21

1. shell脚本变量的定义与赋值

定义变量
Shell 支持以下三种定义变量的方式:
variable=value
variable='value'
variable="value"

variable 是变量名,value 是赋给变量的值。如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号;如果 value 包含了空白符,那么就必须使用引号包围起来。使用单引号和使用双引号也是有区别的,稍后我们会详细说明。

注意,赋值号=的周围不能有空格,这可能和你熟悉的大部分编程语言都不一样。

Shell 变量的命名规范和大部分编程语言都一样:
变量名由数字、字母、下划线组成;
必须以字母或者下划线开头;
不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。

变量定义举例:
url=http://c.biancheng.net/shell/
echo $url
name='C语言中文网'
echo $name
author="严长生"
echo $author
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号$即可,如:
author="严长生"
echo $author
echo ${author}
变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
skill="Java"
echo "I am good at ${skill}Script"
如果不给 skill 变量加花括号,写成echo "I am good at $skillScript",解释器就会把 $skillScript 当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号{ },这是个良好的编程习惯。
修改变量的值
已定义的变量,可以被重新赋值,如:
纯文本复制
url="http://c.biancheng.net"
echo ${url}
url="http://c.biancheng.net/shell/"
echo ${url}
第二次对变量赋值时不能在变量名前加$,只有在使用变量时才能加$。

2. shell脚本中变量前加$表示什么意思

shell脚本执行过程中
把第一个字符串作为脚本名称(或程序名称)处理,第二、第三。。。都作为参数处理。shell会将这些参数默认的赋给变量
1
2
3
。。。所以当你echo
$1
$2的时候看到的就是参数变量的值。
解答一下$#的问题:这里$#是计算输入参数的个数
还有一些有用的算法:$@
代表所有输入的参数;$*
同上

3. 如何在shell脚本中使用变量

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

a=12;
b="helloworld"

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

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

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

4. shell 脚本里的变量怎么加1

shell 脚本里变量加一方式如下六种:

1、第一种整型变量自增方式

a=$(($a+1))

echo$a

2、第二种整型变量自增方式

a=$[$a+1]

echo$a

3、第三种整型变量自增方式

a=`expr$a+1`

echo$a

4、第四种整型变量自增方式

leta++

echo$a

5、第五种整型变量自增方式

leta+=1

echo$a

6、第六种整型变量自增方式

((a++))

echo$a

(4)shell脚本变量加扩展阅读:

基本上shell分两大类:

1、图形界面shell(Graphical User Interface shell 即 GUI shell)

应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。

2、命令行式shell(Command Line Interface shell ,即CLI shell)

bash / sh / ksh / csh / zsh(Unix/linux 系统),cmd.exe/ 命令提示字符(Windows NT 系统),Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统),传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。

5. 如何在shell脚本中使用变量

shell中的变量是边定义边使用的,比如要用到一个变量aa:
#定义变量
aa="hello world"
下面就可以使用变量了:
#打印变量
echo "aa=$aa"
使用变量时在变量前加上$。

6. 如何在shell脚本中使用变量

在网络中 搜索 linux 系统中使用变量 关键词 ,有问题网络。 下面是我查的示例。


  1. 显示环境变量HOME


$ echo $HOME

/home/redbooks

2. 设置一个新的环境变量hello

$ export HELLO="Hello!"

$ echo $HELLO

Hello!

3. 使用env命令显示所有的环境变量

$ env

HOSTNAME=redbooks.safe.org

PVM_RSH=/usr/bin/rsh

Shell=/bin/bash

TERM=xterm

HISTSIZE=1000

...

4. 使用set命令显示所有本地定义的Shell变量

$ set

BASH=/bin/bash

BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")

BASH_VERSION='2.05b.0(1)-release'

COLORS=/etc/DIR_COLORS.xterm

COLUMNS=80

DIRSTACK=()

DISPLAY=:0.0

...

5. 使用unset命令来清除环境变量

set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:

$ export TEST="Test..." #增加一个环境变量TEST

$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了

TEST=Test...

$ unset $TEST #删除环境变量TEST

$ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了

6. 使用readonly命令设置只读变量

如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:

$ export TEST="Test..." #增加一个环境变量TEST

$ readonly TEST #将环境变量TEST设为只读

$ unset TEST #会发现此变量不能被删除

-bash: unset: TEST: cannot unset: readonly variable

$ TEST="New" #会发现此也变量不能被修改

-bash: TEST: readonly variable

环境变量的设置位于/etc/profile文件

如果需要增加新的环境变量可以添加下属行

export path=$path:/path1:/path2:/pahtN

-----------------------------------------------------------------------------------------------------------------------

1.Linux的变量种类

按变量的生存周期来划分,Linux变量可分为两类:

1.1 永久的:需要修改配置文件,变量永久生效。

1.2 临时的:使用export命令声明即可,变量在关闭shell时失效。

2.设置变量的三种方法

2.1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】

用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

例如:编辑/etc/profile文件,添加CLASSPATH变量

# vi /etc/profile

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

2.2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】

用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

例如:编辑guok用户目录(/home/guok)下的.bash_profile

$ vi /home/guok/.bash.profile

添加如下内容:

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。

2.3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】

在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

3.环境变量的查看

3.1 使用echo命令查看单个环境变量。例如:

echo $PATH

3.2 使用env查看所有环境变量。例如:

env

3.3 使用set查看所有本地定义的环境变量。

unset可以删除指定的环境变量。

4.常用的环境变量

PATH 决定了shell将到哪些目录中寻找命令或程序

HOME 当前用户主目录

HISTSIZE历史记录数

LOGNAME 当前用户的登录名

HOSTNAME指主机的名称

SHELL 当前用户Shell类型

LANGUGE 语言相关的环境变量,多语言可以修改此环境变量

MAIL当前用户的邮件存放目录

PS1基本提示符,对于root用户是#,对于普通用户是$

7. Shell脚本中使用变量作为for循环范围

我们知道在shell脚本中,可以通过 {x..y} 这样的表达式来表示一个从x到y的数列

这个用法在shell脚本里叫做 Brace Expansion 。

因此我们常利用这个表达式来作为循环的次数,如:

可以得到从1到10的输出结果。

但是如果我们想输出从1到一个变量的结果,这个变量从其他地方获取:

得到的结果却是

放弃使用 {x..y} 这样的表达式:

seq 命令的原理就不说了,这里说说为什么不能在 { } 中使用变量。其实原因写在bash的man手册中:

Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces.

大意是说,Bash中会最先展开 { } 中的内容,这个时候 $NUM 还不会被具体的值替代,所以是 i 在循环中读取的是 ‘{1..$NUM}’ 的一个完整的字符串,输出时 $NUM 会被10替代,就有了 '{1..10}' 这样的结果。

关于Bash中的展开 (expansion) 顺序,其实有不少值得注意的地方,一不留神可能就会踩坑,还是老前辈那句:脚本猛于虎。

8. 如何在shell脚本中修改添加替换指定文件中的内容

1、可以借助.shell命令执行另一个脚本文件或者用变量保存。比如a.sh和b.sh,a.sh中调用b.sh的代码,一起输出"hello world"的字符串。b.sh的代码如下echo " world!"。

9. 如何在shell脚本中使用变量

在shell脚本中变量的定义,只能以字母和下划线开始,区分大小写,可以包含数字、字母下划线。

示例代码,读取用户输入到变量myvar,然后再输入。

#!/bin/bash

echo "input myvar"

read myvar
echo "myvar is $myvar"

效果如下:

10. Linux_Shell脚本编程之设置环境变量

1、export 变量名 = 变量值(功能描述:将shell变量输出为环境变量/全局变量)
2、source 配置文件 (功能描述:让修改后的配置信息立即生效)
3、echo $变量名 (功能描述:查询环境变量的值)

1、在/etc/profile文件中定义TOMCAT_HOME环境变量

2、查看环境变量TOMCAT的值

3、在另外一个shell程序中使用 TOMCAT_HOME

注意:文档多行注释

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:748
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1012
python中的init方法 发布:2025-10-20 08:17:33 浏览:718
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:878
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1127
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:351
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:229
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:875