手机能创建网站吗dw软件网站建设教程
一、变量分类
根据作用域分三种
 (一)只在函数内有效,叫局部变量
 (二)只在当前shell进程中有效,叫做全局变量
 (三)在当前shell进程与子进程中都有效,叫做环境变量
 shell进程与子进程
 打开一个Shell窗口就创建了一个Shell进程,打开多个Shell窗口就创建了多个Shell进程,每个Shell进程都是独立的,拥有不同的进程ID。
 创建Shell子进程最简单的方式是运行bash命令。通过exit命令可以一层一层地退出Shell。
 根据变量类型分:
 (一)字符串。shell变量默认都是字符串。
 如果想使用其他类型,必须在后续使用时自行转换
 (二)字符串数组。
 二、变量定义
 (一)语法格式
 根据作用域:
 1.定义局部变量
 local varname=value
 必须加上local,否则就变成全局变量了。
 2.定义全局变量
 varname=value
 3.定义环境变量
 export varname=value
 或者
 varname=value
 export varname
 4.还可以定义只读变量
 只读变量的值不能被改变。
 varname=value
 readonly varname
  
说明:
 varname是变量名
 value是值
 =是赋值运算符
 等号两边不能有空格,这可能和你熟悉的所有编程语言都不一样
按类型定义:
 1.字符串
 字符串可以用单引号,也可以用双引号,也可以不用引号。
 (1)单引号
 str='hello world!'
 单引号里的任何字符都会原样输出,也就是说转义都无效。
 单引号中的变量是无效的
 单引号中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
 (2)双引号
 str="hello world!"
 双引号里可以使用变量
 双引号里可以使用转义字符\
 (3)不加引号
 str=helloworld!
 不加引号的话,字串中不能有空格
 2.数字
 因为shell变量都是字符串,所以定义数字就是定义字符串。
 num1=1
 num2="2"
 num3='3'
 a=5.0
 b='2.5'
 3.数组
 shell数组只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。数组元素的下标由0开始。
 用括号来表示,元素用"空格"符号分割开,语法格式如下
 b=(1 2 3 4)
 b=("a" 1 3)
 我们也可以使用下标来定义数组:
 array_name[0]=value0
 array_name[1]=value1
 array_name[2]=value2
 (二)变量名命名规定
 1.命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
 2.不能有空格
 3.不能使用标点符号
 4.不能使用bash里的关键字(可用help命令查看保留关键字)
 5.环境变量一般都用大写
 有效的Shell变量名示例如下:
 RUNOOB
 LD_LIBRARY_PATH _var
 var2
 无效的变量命名:
 ?var=123
 user*name=runoob
 (三)变量定义的地方
 1.临时地点
 在命令行或者脚本中定义,这种方式在退出shell进程后变量失效。也就是说,无论是全局变量、环境变量,只要是在这种地方定义的,脚本退出后,统统失效。
 2.永久地点
 在用户配置文件.bash_profile、.bashrc文件中或系统配置文件/etc/profile、/etc/profile.d/中定义。
 每次打开shell时,都会先执行一次上述文件。
 系统默认在永久地点定义了一些环境变量
 我们也可以在永久地点添加一些自定义环境变量。
 三、变量读取
 读取变量的值一般形式:
 $varname
 ${varname}
 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
 比如下面这种情况:for skill in Ada Coffe Action Java; do
     echo "I am good at ${skill}Script"
 done
 如果不加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量,代码执行结果就不是我们期望的样子了。
 推荐给所有变量加上花括号,这是个好的编程习惯。
 读取数组元素值的格式是:
 ${array_name[index]}
 获取数组中的所有元素:
 ${my_array[*]}
 ${my_array[@]}
 获取数组的长度:
 ${#my_array[*]}
 ${#my_array[@]}
 四、删除变量
 使用unset命令可以删除变量。
 语法:
 unset variable_name
 变量被删除后会失效。
 unset命令不能删除只读变量。
 myUrl="https://www.runoob.com"
 unset myUrl
 echo $myUrl
 以上实例执行将没有任何输出。
 五、查看变量
 (一)查看所有变量
 set     查看所有变量和函数
 (二)只查看环境变量
 env     查看所有环境变量
 export -p     查看所有环境变量
