shell脚本设置变量
1. shell脚本怎样读取文件的值,并赋值给变量
在sell脚本中,读取键盘输入的内容并将其赋值给shell变量的命令为:
read -p "input a val:" val echo $val
read - 从标准输入读取数值。这个 read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用 重定向的时候,读取文件中的一行数据。
它的语法形式一般是:
read [-options] [variable...]
(1)shell脚本设置变量扩展阅读:
Shell是一种脚本语言,常见的脚本解释器有:
bash:是linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
常见的编程语言分为两类:一个是编译型语言,如:c/c++/java等,它们远行前全部一起要经过编译器的编译。
2. shell 脚本里的变量怎么加1
shell 脚本里变量加一方式如下六种:
1、第一种整型变量自增方式
a=$(($a+1))
echo$a
2、第二种整型变量自增方式a=$[$a+1]
echo$a
a=`expr$a+1`
echo$a
leta++
echo$a
5、第五种整型变量自增方式leta+=1
echo$a
6、第六种整型变量自增方式((a++))
echo$a
(2)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。
3. 如何正确在Linux Shell脚本中定义一个时间变量
1、创建脚本 test.sh,并入截图内容。
4. shell 脚本 怎么添加环境变量到/etc/profile
要想对整个系统有效,就编辑/etc/profile。在这里的更改对于用户使用何种shell(csh,bash等)是无关的如果使用的shell是bash,那就编辑~/bash_profile文件,这个文件在用户登录的时候被执行一遍~/bashrc一般是用来存放alias等设置的,这个文件在每次启动bash的时候都会执行一遍
5. 如何通过shell脚本设置全局的环境变量
如何通过shell脚本设置全局的环境变量
-bash-3.00# env
HZ=100
LC_MONETARY=en_US.ISO8859-1
SHELL=/usr/bin/bash
TERM=ansi
LC_NUMERIC=en_US.ISO8859-1
MAIL=/var/mail/pc
PATH=/usr/sbin:/usr/bin:.
LC_MESSAGES=C
LC_COLLATE=en_US.ISO8859-1
PWD=/export/home/pc
TZ=PRC
SHLVL=1
HOME=/export/home/pc
LOGNAME=pc
LC_CTYPE=en_US.ISO8859-1
LC_TIME=en_US.ISO8859-1
_=/usr/bin/env
如果只想看指定的变量设置,如路径PATH的设置,可以用 "echo $PATH"或 “ env | grep PATH"或” env | grep -i path"来查询。前面的适合知道全名的,后面2种适合只知道部分字段或者部分关键字母(甚至不确定字符大小写)的。
-bash-3.00# echo $PATH
/usr/sbin:/usr/bin:.
-bash-3.00# env | grep PATH
PATH=/usr/sbin:/usr/bin:.
6. 如何在shell脚本中设置环境变量
如何通过shell脚本设置全局的环境变量
-bash-3.00#
env
HZ=100
LC_MONETARY=en_US.ISO8859-1
SHELL=/usr/bin/bash
TERM=ansi
LC_NUMERIC=en_US.ISO8859-1
MAIL=/var/mail/pc
PATH=/usr/sbin:/usr/bin:.
LC_MESSAGES=C
LC_COLLATE=en_US.ISO8859-1
PWD=/export/home/pc
TZ=PRC
SHLVL=1
HOME=/export/home/pc
LOGNAME=pc
LC_CTYPE=en_US.ISO8859-1
LC_TIME=en_US.ISO8859-1
_=/usr/bin/env
如果只想看指定的变量设置,如路径PATH的设置,可以用
"echo
$PATH"或
“
env
|
grep
PATH"或”
env
|
grep
-i
path"来查询。前面的适合知道全名的,后面2种适合只知道部分字段或者部分关键字母(甚至不确定字符大小写)的。
-bash-3.00#
echo
$PATH
/usr/sbin:/usr/bin:.
-bash-3.00#
env
|
grep
PATH
PATH=/usr/sbin:/usr/bin:.
7. 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}
第二次对变量赋值时不能在变量名前加$,只有在使用变量时才能加$。
8. 如何在shell脚本中使用变量
在shell脚本中变量的定义,只能以字母和下划线开始,区分大小写,可以包含数字、字母下划线。
示例代码,读取用户输入到变量myvar,然后再输入。
#!/bin/bash
echo "input myvar"
read myvar
echo "myvar is $myvar"
效果如下:
9. shell脚本中可以设置全局变量么
因为 管道符 会新建shell来执行后面的while语句,a的值在新建shell中被改写。
你这里 ls 的结果只有一条,所以while循环只执行一次就退出了,从新建shell回到原shell,a的新值不会被带出来,还是"hehe"。
用输入重定向来替换管道符就行了,例如可以这样:
a="hehe"
while read line
do
a="wuwu"
echo "$a"
done <`ls -ltr`
echo "$a"
追问
不行额,报错的
追答
我没环境测试,再改一下:
a="hehe"
ls -ltr | ( while read line
do
a="wuwu"
echo "$a"
done
echo "$a" )
用小括号使得最后的 echo "$a" 与 while 语句在同一个shell环境中。
10. shell脚本里面怎么在字符串中引用变量
单引号里 $ 符号会被当成普通字符串,而不会引用其变量值。你应该用双引号,如:"xxxx${abc}xxxx"