shell 脚本记录

name=nick #声明变量, = 两边不能有空格,如果有空格是比较两个值是否相等

echo $name #第 1 种输出变量方式,变量名称要带 $ 符合

echo ${name} #第 2 种输出变量的方式

echo ${#name} #获取字符串变量的长度

new_name='$name' #单引号不能解析变量,输出 $name

new_name="$name" #双引号正常解析变量,输出 nick

my_pwd=`cd /usr/local/nginx/conf && pwd` #第 1 种将命令保存在变量中

echo $my_pwd #输出 /usr/local/nginx/conf

my_pwd_2=$(cd /usr/local/nginx/conf && pwd) #第 2 种将命令保存在变量中

echo $my_pwd #输出 /usr/local/nginx/conf

echo $SHELL #查看当前的 shell 

a=1

b=2

let num=a+b #let 修饰符变量不需要加 $ 符号

echo $num #输出 3 

let num++

echo $num # 输出 4

let num--

echo $num #输出 3

demo=$[a+b] # $[] 修饰符内变量的 $ 符合可选

echo $demo #输出 3

test=$[$a+$b] # $[] 修饰符内变量的 $ 符合可选

echo $test #输出 3

test2=$((a+b)) #与 $[] 修饰符类似

echo $test2 #输出 3

test3="$(($a+$b))" # 第 2 种方式

echo $test3 #输出 3

tput cols #获取终端的列数

tput lines #获取终端的行数

在编写脚本的时候会频繁使用标准输入(stdin)、标准输出(stdout)和标准错误 (stderr)。

文件描述符是与某个打开的文件或数据流相关联的整数。文件描述符0、1以及2是系统预留的。

0 —— stdin(标准输入)。 1 —— stdout(标准输出)。 2 —— stderr(标准错误)。

处理错误时,来自stderr的输出被丢弃到文件/dev/null中。/dev/null是一个特殊的设备文件, 它接收到的任何数据都会被丢弃。null设备通常也被称为黑洞,因为凡是到这儿的数据都将一去 不返。

> 符合为重定向,此符号会先清空文件,然后再写入内容。 

>> 符合为追加,此符号会将内容追加到现有文件的尾部。

当一个命令发生错误并退回时,它会返回一个非 0 的退出状态; 而当命令成功完成后,它会返回数字 0 。退出状态可以从特殊变量 $?  中获得(在命令执行之后立刻运行 echo $? ,就可以打印出退出状态)。

arr=(1,2,3) #声明索引数组

echo ${arr[0]} #输出索引为 0 的值

echo ${arr[*]} #输出所有数据

echo ${arr[@]} 输出所有数据

echo ${#arr[*]} #输出数组数据长度

shell 声明函数的 2 种方式,function 关键字可以忽略

function fun1()
{
    #函数体
}

fun2()
{
   #函数体
}
fun2 #调用函数,不用加括号 (), 无论有没有参数

f1() 
{
    echo $1, $2; #访问参数 1 和参数 2
    echo "$@";   #以列表的方式一次性打印所有参数 
    echo "$*";   #类似于$@,但是参数被作为单个实体 
    echo "$#"    #参数的数量
    return 0;    #返回值
}
f1 a b #调用函数并传递两个字符串参数,默认变量都是字符串类型
打赏作者

您将是第一位评论人!

提醒
avatar