shell学习之路二

Shell变量

变量说明:

  • 变量名和等号之间不能有空格

  • 命名只能用英文字符、数字和下划线,收个字符不能以数字开头

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

  • 不能使用标点符号

  • 不能使用bash中的关键字(help命令查看保留关键字)

定义:

 your_name="Joey.com"  # key value 对

  ?var=123
  user*name=runoob
  #除了显式地直接赋值,还可以用语句给变量赋值
  for file in `ls /etc`
  for file in $(ls /etc) #以上语句将 /etc 下目录的文件名循环出来。

使用变量:

#使用一个定义过的变量,只要在变量前面加上美元符号即可
your_name="hechanghang"
echo $your_name
echo ${your_name}  #变量名外面的花括号是可选的,加不加都行
for skill in Ada Coffe Action Java;do
    echo "I am a good at ${skill}Script"
done   #为了帮助解释器识别变量的边界

# 已定义的变量可以被重新定义:

your_name="tom"
echo $your_name
your_name="Rose"
echo $your_name

使用readyonly命令可以将变量定义为只读变量(只读变量不能改变)

#!/bin/bash
myUrl="http://www.hchlyf.com"
readyonly myUrl
myUrl="http://www.hc.com"
#运行脚本结果:/bin/sh:NAME:This is variable is read only

删除变量

unset vaiable_name
#被删除后的变量不能被再次使用
#unset命令不能删除只读变量

#!/bin/sh
myUrl="http://www.hchlyf.com"
unset myUrl
echo $myUrl    #无任何输出

变量类型:

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

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

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

  • 预定义变量:
    •   $?    执行上一个命令的返回值 执行成功,返回0,执行失败,返回非0(具体数字由命令决定)
    •   $$    当前进程的进程号(PID),即当前脚本执行时生成的进程号
    •        $!     后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程 &
        
  • 位置参数变量: 
    • $n | n为数字,$0代表命令本身,$1-$9代表第一到第9个参数, 十以上的参数需要用大括号包含,
      如${10}。
    • $* | 代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数
    • $@ | 代表命令行中的所有参数,把每个参数区分对待。以"$1" "$2" … "$n" 的形式输出所有参数
    • $# | 参数的个数
  • env:查看所有的环境变量

  • vim /etc/profile:编辑环境变量;

  • 注意:编辑过环境变量后需要使用:sourse /etc/profile来使环境变量生效

#java environment;Java环境变量的设置
export JAVA_HOME=/export/servers/jdk1.8.0_241
export PATH=:$JAVA_HOME/bin:$PATH

Read 命令

read [选项] 值
read -p(提示语句) -n(字符个数) -t(等待时间,单位为秒) –s(隐藏输入)
 
相当于java中的scanner,用户输入, 从程序外部接收参数
  1.在输入时,如果输错了要删除要执行control+delete
  2.不要输入中文
  3.NAME与"之间要有空格
read –t 30 –p “please input your name: ” NAME
echo $NAME
read –s –p “please input your age : ” AGE
echo $AGE #注意:如果隐藏输入,这里的结果是看不到的 read –n 1 –p “please input your sex [M/F]: ” GENDER
echo $GENDER
原文地址:https://www.cnblogs.com/joey-413/p/13953044.html