shell脚本中可以设置全局变量么

如题所述

第1个回答  2017-04-07
如何通过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:.本回答被网友采纳
第2个回答  2017-08-26

可以,如下

var="My global variable"
echo $var

第3个回答  2017-04-07
因为 管道符 会新建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"
第4个回答  2017-04-07
可以的,设定后在脚本运行中会一直生效