bash学习基础

变量 

your_name="sereny"
echo ${your_name} #花括号可加可不加,推荐给所有变量加上花括号,这是个好的编程习惯。
echo "I am good at ${skill}Script" #加花括号是为了帮助解释器识别变量的边界
#可以二次赋值,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。
for file in `ls /etc` #隐式复制赋值
或
for file in $(ls /etc)

readonly myUrl #只读变量
unset variable_name #删除变量,不能删除只读变量。
echo ${#string} #输出 4字符串长度
echo ${string:1:4} # 提取runoob 输出 unoo
echo `expr index "$string" io`  # 输出 4 #查找i或者o位置,反引号`

注释多行如下,EOF 也可以使用其他符号单引号,叹号 :<<!andjfn!:
单行#
:<<EOF
注释内容...
注释内容...
EOF
其他参考https://www.runoob.com/linux/linux-shell-variable.html


传递参数

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第一个参数为:$2";

$ chmod +x test.sh 
$ ./test.sh 1 2 3
:<<!
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2!
参考:https://www.runoob.com/linux/linux-shell-passing-arguments.html

执行

#1 cd 到相应目录执行:
chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本
#2作为解释器参数运行
/bin/sh test.sh
/bin/php test.php

数组函数

my_array=(A B "C" D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "数组的元素为: ${my_array[*]}"#使用@ 或 * 可以获取数组中的所有元素

运算符

#expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
val=`expr 2 + 2`
echo "两数之和为 : $val"
val=`expr $a \* $b` #转义相乘
echo "a * b : $val"
if [ $a == $b ]
val=`expr $b / $a`
文件-r可读  -w可写  -x可执行
-eq	等于则为真    -ne	不等于则为真    
-gt	大于则为真    -ge	大于等于则为真    
-lt	小于则为真    -le	小于等于则为真
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
#其他:https://www.runoob.com/linux/linux-shell-basic-operators.html

显示

\c下面的echo不换行  \n换行
echo "It is a test" > myfile #6.显示结果定向至文件
echo '$name\"' #7.原样输出字符串,不进行转义或取变量(用单引号)
echo `date` #8.显示命令执行结果单引号,日期
Thu Jul 24 10:08:46 CST 2014

printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234  #%-10s 指一个宽度为10个字符
printf "%s and %d \n" #如果没有参数,那么%s用NULL代替,%d 用 0 代替

 函数

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
funWithParam(){  #函数参数
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

输入输出重定向

command > file	将输出重定向到 file。
command < file	将输入重定向到 file。
command >> file	将输出以追加的方式重定向到 file。
n > file	将文件描述符为 n 的文件重定向到 file。
n >> file	将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m	将输出文件 m 和 n 合并。
n <& m	将输入文件 m 和 n 合并。
<< tag	将开始标记 tag 和结束标记 tag 之间的内容作为输入。
source filename #包含外部脚本
发布了156 篇原创文章 · 获赞 28 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/serenysdfg/article/details/104554093