Shell相关

shell的两种执行方式:
1.使用./ 脚本名执行
chmod u+x shell脚本名--给当前用户一个可执行权限,如果别的用户需要执行权限,可以给其它用户可执行的权限,然后使用 ./shell脚本名 执行该脚本
2.sh shell脚本名


shell的debug模式:
1.sh -x shelll脚本名
2.在 脚本中 #!/bin/bash -x ,然后使用./shell脚本名执行

shell中变量:Linux Shell中的变量分为“系统变量”和“用户自定义变量”,k=v的形式,变量名称一般为大写,=前后不能有空格,可以使用set查看当前所有系统变量,常见的系统变量:$HOME、$PWD、$SHELL、$USER等等
eg:
a=1
echo $a
echo ${a}

两种方式都可以调用变量,但是推荐第二种方式。(思考一下为什么) 

只读变量:readonly
age=10
readonly age
age=20 #执行时报错,提示不能修改
echo "$age"   

删除变量: unset
age=10
unset age
echo "$age" #没有结果


Shell中的特殊变量
$? 表示上一个命令退出的状态(是否执行成功)
$$表示当前进程编号
$0 表示当前脚本名称
$n 表示n位置的输入参数(n代表数字,n>=1)  $1,$2,$3,.........
$# 	表示参数的个数,常用于循环

eg:
#!/bin/bash
echo "$1,$2,$3"
echo "第一个参数的值是:$1"
echo "第三个参数的值是:$3"
echo "参数的个数是:$#"
echo "运行的状态是:$?"
echo "当前运行的编号是:$$"
echo "参数列表:$*"

传递参数只需要在执行shell脚本的时候:sh shell脚本名 参数1 参数2 参数3...

关于单引号和双引号:
' ':单引号中的东西会原样输出
" ":双引号中的会进行转义
eg:
echo '$$'    #则会输出 $$
echo "$$"  #则会输出当前运行的进程号


$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以$1  $2  … $n 的形式输出所有参数,当它们被双引号" "包含时,
"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;
"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数



   

 Shell 注释
    注:单行注释:注释行首加 #,sh只支持单行注释。
    	Bash多行注释:<<EOF
    				[注释内容]
    				  EOF


shell中的计算:使用expr计算,也可以使用awk
#!/bin/sh
a=10
b=20
c1=`expr $a - $b`
c2=`expr $a + $b`
c3=`expr $a \* $b`
c4=`expr $a / $b`
echo "$a -  $b => $c1"
echo "$a +  $b => $c2"
echo "$a \* $b => $c3"
echo "$a /  $b => $c4"
结果为:
10 -  20 => -10
10 +  20 => 30
10 \* 20 => 200
10 /  20 => 0

注意:
1. 运算符前后都要有空格
2.运算操作使用不是双引号也不是单引号,是(英文模式下)反引号``
3. 乘法运算的时候 运算符* 要使用转义符 \* 
4.if判断中,-gt是大于,-lt是小于,-ge是大于等于,-le是小于等于,-eq是等于,-ne是不等于
5.数字之间比较用: 1!=2 或者 1 -ne 2 表示不相等
1 = 1 或者 1 -eq 1 表示相等
字符串之间比较用: 
“a” != “b” 表示不相等
“a” = “a” 表示相等 
一定注意: 运算符前后必须有空格


文件测试运算符:

在这里插入图片描述

关于shell中循环:
for循环语法1
arr=($1 $2 $3)
for value in ${arr[@]}
do
echo $value
done

for循环语法2
arr=($1 $2 $3)
for((i=0;i<${#arr[@]};i++))
do
        echo ${arr[i]}
done

while循环语法:
i=0
while [ $i -le 5 ]
do
 echo 'y'
let  i++
done

关于for循环和while循环中循环条件双括号的问题:
语法:
((表达式1,表达式2…))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。
2、在双括号结构中,引用变量可以不用 $变量名,可以直接使用变量名
3、双括号可以进行逻辑运算,四则运算
4、双括号结构 扩展了for,while,if条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开

跳出循环:
break:break命令允许跳出所有循环(终止执行后面的所有循环)。
continue:continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

if else语句语法:
if [[ $1 -ge 5 ]]; then
echo $1">5"
elif [[ $1 -le 5 ]]; then
echo $1"<5"
else
echo $1"=5"
fi



case语法:
echo "输入1到3之间的数字:"
echo "亲,输入的数字是:"
read num
case $num in
1)
echo "你选择了1";;
2)
echo "你选择了2";;
3)
echo "你选择了3";;
*)
echo "你没有输入1到3之间的数字";;
esac

函数:
function  方法名 ()
{
   操作
}
或者:
方法名(){
操作
}

删除函数:像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项,如下所示:
unset .f 函数名
脚本的调用:如何在一个脚本中调用另一个脚本呢?
可以直接在一个脚本文件中 sh 另一个脚本文件全称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值