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 #调用函数并传递两个字符串参数,默认变量都是字符串类型
打赏作者
您将是第一位评论人!