shell简明教程

**只读变量 **readonly var

**变量删除 **unset var

变量类型:

局部变量 在脚本或命令中定义,仅在当前shell实例有效

环境变量 所有程序都能访问的变量

shell变量 由shell程序特殊设置的变量

单引号: 任何字符都会原始输出

双引号 可以有变量或者转移字符

拼接变量: 直接在后面加上就行

获取字符串长度 ${#str}}

获取子串 echo ${str:1:4}

数组 数组名=(值1, 值2, … , 值n)

读取数组 $(数组名[下标])

获取数组长度 ${#array_name[*]}

多行注释

:<<EOF

注释内容

EOF

参数传递

第一个参数 $1

参数个数 $#

参数内容 $* 或

​ $@

参数计算

var=expr 2 + 2

关系运算符(test)

-eq 是否相等

-ne 是否不相等

-gt(-ge) 左边是否大于右边

-lt(-le) 右边是否大于左边

-o 或

-a 与

&& 逻辑与

|| 逻辑或

字符运算(test)

= 两个字符是否相等

!= 两个字符是否不等

-z 长度是否为0

-n 长度是否不为0

$ 字符是否为空

文件运算

-b 是否是块设备

-c 是否是字符设备

-d 是否是目录

-f 是否是普通文件

-r 是否刻度

-w 是否可写

-x 是否可执行

-s 是否不为空(文件大小为0)

-e 是否存在

printf

与C语言相同

**流程控制 **

if condition
then
    command1 
    command2
    ...
    commandN 
fi
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done


for (( i=0; i<5; i++));do
	echo "$i"
	done
	
for i in `seq 1 5`;do
	echo "$i"
	done
	
for i in {1..5};do
	echo "three:$i"
	done

for i in `ls /home/qyu`;do
	echo "file$i"
	done
while condition
do
    command
done
until condition
do
    command
done
case 值 in
模式1)
    command1
    command2
    commandN
    ;;
模式2)
    command1
    command2
    commandN
    ;;
esac


while read m;do
case $m in
[0-9]) echo "haha"
;;
[a-z]) echo "uu"
;;
*)
;;
esac

done

跳出循环: break命令,continue命令

函数

[ function ] funname [()]

{

    action;

    [return int;]

}

函数参数

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

func(){
	echo "函数被调用$1"
	echo "参数数量为$#"
	
	s=0
	for i in $*;
	do 
	let s=s+i
	echo "sss:"$s
	done
	return  $s
}
func 5 2 3
echo $?
$$
Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)
$!
Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$?
最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$-
显示shell使用的当前选项,与set命令功能相同
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$@ 跟$*类似,但是可以当作数组用
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
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 之间的内容作为输入。

文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

如果希望屏蔽 stdout 和 stderr,可以这样写:

$ command > /dev/null 2>&1

read 参数

括号

() 相当于`order`

**(())**常用于算术运算比较,数值计算

[] 相当于test

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值