07月22, 2017

Shell 基础学习

变量名的组成:

  1. 首字母 [a-zA-Z0-9_]
  2. 不能包含空格,能够使用下划线代替
  3. 不能使用关键字

变量的使用:

#define
url="https://www.so.com"

#readonly, 只读的不能修改
#如果修改:line <number>: url: readonly variable
readonly url

#销毁变量
unset url

#变量引用
echo "enter: $url"
echo "enter: ${url}"
#{} 主要用于确定变量的边界, 下面表示 $url, 而非 $url_site
echo "enter: ${url}_site"
#{} 边界在 $ 连续编写的时候不用,不过不推荐
#如果这样写的拖出去吧...
url1="url1"
url2="url2"
url3="url3"
echo $url1$url2$url3

变量的类型

  1. 局部变量,脚本当前作用域
  2. 环境变量,shell 具备访问环境变量的能力
  3. shell 变量,自己提供的,可以包括(1, 2)

shell 的特殊变量

这里主要是写点例子熟悉一下就行了。

echo "args length: $#"
echo "args length: ${#}"
for arg in $*;
  do
    echo "arg is: ${arg}"
  done

echo "----------------"

for var in "$*";
  do
    echo $var
  done

for var in "$@";
  do
    echo $var
  done
#执行
sh ./demo.sh 1 2 3
#输出
args length: 3
args length: 3
arg is: 1
arg is: 2
arg is: 3
----------------
1 2 3
1
2
3

例子中主要注意 $*$@ 的区别,区别在于用 "" 包裹的时候,其余情况一致,可以运行了试试。

其余的看一个表,$? 暂时不用管。

变量 含义
$0 当前脚本的文件名, 这里指执行的文件,比如 ./demo.sh => ./demo.sh
$n 传入的参数,从 1 开始,一次类推,$* 能够访问所有的参数
$# 参数的个数,length => 也是从 1 开始计数
$* 所有参数
$@ 所有参数,区别见例子
$$ 当前进程的 pid
$? 上次退出状态的返回值,也可以作为函数返回值

本文链接:http://www.60sky.com/post/shell-study-1.html

-- EOF --

Comments