Shell 命令

  • shell 脚本第一行要指明要使用的 shell,其格式是:

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    ```
    在通常的 shell 脚本的行里,井号(#) 用作注释行.然而 shell 脚本文件的第一行是个特例,井号后接感叹号指明用哪个 shell 来运行脚本.


    - 在环境变量前加 $ 符号可以输出环境变量的值.
    ```
    echo $USER
  • 在脚本中看到美元符号,shell 脚本会以为在引用一个变量,可以通过在变量两侧添加花括号来识别美元符号后的变量名:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ${variable} 
    ```

    - 通过等号给用户变量赋值时,在变量/等号和值之间不能出现空格.

    - 类似于系统变量,也可通过美元符号获得用户变量的值.
    ```
    name="chao"
    echo $name
  • 将一个变量的值赋值给另一个变量时,必须使用美元符号,否则 shell 会将变量名解释成普通的文本字符串.

  • 反引号(`)允许你将 shell 命令的输出赋值给变量(必须用反引号把整个命令行圈起来).

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    d=`date`;echo $d 
    ```

    - 输出重定向: 将命令的输出发送到一个文件中.
    ```
    date > date.txt
    ```
    `>` 符号是覆盖文件中的文本(如果文本中已有数据),要想在文本数据中追加内容可以使用 `>>` 符号.

    - 输入重定向: 将文件的内容重定向到命令.
    ```
    wc < date.txt
    ```
    结果: 1 6 43
    wc 命令提供了对数据中文本的计数.默认情况下,它会输出3个值:
    - 文本的行数;
    - 文本的词数;
    - 文本的字节数.

    - 管道: 将一个命令的输出重定向到另一个命令,类似于反引号(`). 格式:
    ```
    command1 | command2
    ```
    管道两边的命令会同时运行,在系统内部将它们连接起来.在第一个命令产生输出的同时,输出会被立即送给第二个命令.传输数据不会用到任何中间文件或缓冲区域.

    - expr 命令: Bourne shell 提供的用来处理数据表达式的命令.

    - bash shell 兼容了 expr 表达式,但同时也提供了一个更简单的方法.在 bash 中,在将一个数学运算结果赋给某个变量时,可以用美元符号和方括号($[operation])将数学表达式圈起来.
    ```
    var=$[1 + 5]
  • 命令行参数: 通过命令参数可以想 shell 脚本传递参数.

    ./addem 10 30 

    bash shell 会将一些成为位置参数的特殊变量分配给命令行输入的
    所有参数.位置参数变量是标准的数字:
    $0 是程序名,
    $1 是第一个参数,
    $2 是第二个参数,

  • read 命令: read 命令接受从标准输入(键盘)或另一个文件的描述符的输入,在收到输入后,read 命令会将数据放进一个标准变量.

    echo -n "Enter your name: " 
    read name 
    echo "Hello $name, welcome to my program. " 

    echo 命令的 -n 选项会移掉字符串末尾的换行符,允许脚本用户紧跟其后输入数据,而不是下一行.

read 命令允许制定多个变量.输入的每个数据值都会分配给表中的下一个变量.如果变量表在数据之前用完了,剩下的数据就会都分配给最后一个变量.

read 命令可以设置超时时间(s),当超时后,read 命令会返回一个非零退出状态码.

read -t 5 "Please enter your name: " name 

read 命令的 -s 参数可以隐藏数据显示.

read 命令也可以用来读取 Linux 系统上文件里保存的数据.每次调用 read 命令时会从文件中读取一行文本.当文件中再没有内容时,read 命令会退出并返回非零退出状态码.

分享到:
Disqus 加载中...

如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理