shell学习入门

1、linux 下面的换行符是"\n" ,windows 下面的换行符是"\r\n"
shell 的运行方法:
第一种 ./xx.sh 需要有可执行权限
第二种 source xx.sh
第三种 bash xx.sh

2.1 shell 程序hello world 解析

shell 第一行一般都是#!/bin/sh
这行话以#!开始后面+一个pathname ,这行话的意思就是指定shell程序执行时被哪个解释器执行,#!/bin/sh的意思就是这个设立了将被当前系统中/bin目录下面sh可执行程序执行
除了sh我们还可以使用bash来执行该脚本
注意:在ubuntu上面默认使用的解释器sh其实不是bash,而是dash,dash是ubuntu中默认使用的脚本解释器。

2.2.1 变量

(1) 定义和初始化 使用=号进行初始化赋值 在shell中赋值=两边不能使用空格

 string=”hello world"
 echo $string
 

(2) 变量赋值
(3)变量引用 。shell中引用符号是$符号,如果后面的定量没有被定义会被识别成一个赋值为空的变量,
$var v a r 在 有 些 情 况 下 只 能 使 用 {var} 在有些情况下只能使用 var使{var}不能使用$var

var="hello"
echo "{var}you"

2.2.2 单引号和双引号的区别

(1) shell 中使用字符串可以不添加双引号,直接使用,而且有空格的时候也可以,但是不能输出像”或者其他转义字符
(2) shell也可以使用单引号输出字符串也可以输出转义字符,字符是什么就输出什么
(3) 双引号,输出转义后的字符(和C语言是一样的)

string=new string
string='new stri"ng'
string="new string\"ng"


2.2.3 调用linux命令

1)直接执行
2) 反引号括起来(ESC 下面的按键下面那个按键)(有时候在我们shell中调用linux 命令是为了得到这个命令的返回值)

2.2.3 选择分支

格式:
if condition
then
command1
command2

commandN
else
command
fi

if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
3) 判断文件是否存在 -f (-f 后面加的文件不能有空格)

  1 #!/bin/sh
  2 
  3 #判断文件a.txt是否存在如果不存在则创建
  4 if [ -f a.txt ]
  5 then
  6  echo "yes"
  7 else
  8  mkdir a.txt
  9 fi

这个不知道为什么一直判断都是不存在

判断目录是否存在 -d
判断字符串是否想等 “string”=“string”
判断数字是否相等 (-eq) 大于 (-gt) 小于 ( -lt) 大于等于 (-ge) 小于等于 (-le)
equal gt greater than lt less than ge greater or equal le less or equal
判断是否为空 -z (注意-z判断是如果变量本身没定义也是不成立)
-o 表示逻辑或 (c 语言中 ||)
简写的if表达式

[ -z $str ] || echo "fei kong"

2.2.4 循环结构

for var in item1 item2 … itemN
do
command1
command2

commandN
done

 for i in ·ls·
 do
  	echo $i
 done

while 循环
while condition
do
command
done

until condition
do
command
done

2.2.5 echo 创建文件和最佳输入文件

创建文件并输入内容的>。 向一个已经存在的文件中追加输入字符使用>>.

 echo "test" > a.txt

2.2.5 case 语句

case 值 in
模式1)
command1
command2

commandN
;;
模式2)
command1
command2

commandN
;;
esac

2.2.6 传参

$# 表示调用该shell是传参的个数 ( $#表示真实的参数个数)
shell source a.sh aa bb cc $# = 3
$0是执行这个设立了程序的解析程序的名称 ,$1第一个有效参数的值,$2第二个有效参数的值,
$0, $1… $n表示各个参数

2.2.7 break ,shift

shell中只用于while循环,所以当while中内嵌case语句,case中的break是跳出外层的while循环的,不是用来跳出case语句的

shift 把我们给shell程序的传参左移了一位 aa bb cc ===> bb cc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值