Shell

http://www.jcwcn.com/article-31939-1.html

file hello

hello
#!/bin/bash 
# This is a very simple example
echo Hello World

执行(有三种方式):

$bash hello

$sh hello

$./hello (由于hello文件中第一行指明了/bin/bash文件,系统会调用/bin/bash程序去解释执行)

1.2 关于输入、输出和错误输出

> 表示输出(标准输出和标准错误输出)重定向符号

>> 表示不清除原文件内容,而追加输出。

例如:

$ ls > ls_result

$ ls -l >> ls_result

稍微复杂一点的

$ find /home -name lost*  2> err_result

在符号“>”前多了个“2”,表示将标准错误输出重定向。

将标准错误输出和标准输出都被存到文件中:

$ find /home -name lost* > all_result 2>&1

简写

$ find /home -name lost* >& all_result

如果出错信息并不重要

$ find /home -name lost* 2> /dev/null

试验:

$ find /home -name lost* > all_result 1>& 2 
$ find /home -name lost* 2> all_result 1>& 2
$ find /home -name lost* 2>& 1 > all_result

另外一个非常有用的重定向操作符是 "-",请看下面这个例子:

$ (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)

该命令表示把 /source/directory 目录下的所有文件通过压缩和解压,快速的全部移动到 /dest/directory 目录下去,这个命令在 /source/directory 和 /dest/directory 不处在同一个文件系统下时将显示出特别的优势。

下面还几种不常见的用法:

n<&- 表示将 n 号输入关闭 
<&- 表示关闭标准输入(键盘)
n>&- 表示将 n 号输出关闭
>&- 表示将标准输出关闭

1.3 BASH中对变量的支规定

没有定义,不赋值该变量为空(是NULL,不是0)。

str
#!/bin/bash 
# give the initialize value to STR
STR="Hello World" 
echo $STR 

一、变量赋值时,‘=’左右两边都不能有空格

二、BASH中的语句结尾不需要分号';'

三、除了在变量赋值和在FOR循环语句头中,BASH中的变量使用必须在变量前加“$"符号。

四、由于BASH程序是在一个新的进程中运行的,所以该程序中的变量定义和赋值不会改变其他进程或原始Shell中同名变量的值,也不会影响他们的运行。

更标准的变量引用方式是${STR},$STR是对${STR}的一种简化。

关于整数变量计算,一般通过let和expr这两个指令来实现

let "x = $x + 1" 或 x = `expr $x + 1`

add
#!/bin/bash 
x=1999 
let "x = $x + 1" 
echo $x 
x=`expr $x + 1`
echo $x
x="olympic'"$x 
echo $x

局部变量

在变量首次被赋值时加上local关键字

local
#!/bin/bash 
HELLO=Hello 
function hello { 
local HELLO=World 
echo $HELLO 
} 
echo $HELLO 
hello 
echo $HELLO
原文地址:https://www.cnblogs.com/jimwind/p/2871109.html