shell知识点快速入门(复习)笔记--囫囵吞枣版

shell知识点快速入门(复习)笔记(前)

shell知识点快速入门(复习)笔记(后)

变量
获取字符串长度

string="abcd"
echo $string	#输出abcd
echo ${#string} #输出 4

提取子字符串

string="I am a beautiful girl"
echo ${string:1:4} # 输出 am

数组

array_name=(value0 value1 value2 value3)

获取数组长度

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
$ array_name=(value0 value1 value2 value3)
$ length=${#array_name[@]}
$ echo $length
4
[dengyueying@cjzz_dev ~]$ lengthn=${#array_name[1]}
[dengyueying@cjzz_dev ~]$ echo $lengthn
6

传参
获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…($0为文件名)

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

运行结果:

[dengyueying@cjzz_dev shell]$ ./test4.sh 1 2 3
Shell 传递参数实例!		
执行的文件名:./test4.sh	#$0
第一个参数为:1
第二个参数为:2
第三个参数为:3

for循环($* 和 $@)

for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

结果

$ chmod +x test.sh 
$ ./test.sh 1 2 3
1 2 3
-- $@ 演示 ---
1
2
3

数组

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

结果:

$ chmod +x test6.sh 
$ ./test6.sh
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D

数组长度
同上数组

echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"

结果

数组元素个数为: 4
数组元素个数为: 4

运算符
算术运算符与C没什么不同,这里省略。
同时,因为博主暂时用不到文件测试运算符,所以以下也不会提及

关系运算符
变量 a 为 10,变量 b 为 20

运算符说明举例
-eq检测两个数是否相等[ $a -eq $b ] 返回 false。
-ne检测两个数是否不相等[ $a -ne $b ] 返回 true。
-gt检测左边的数是否大于右边的[ $a -gt $b ] 返回 false。
-lt检测左边的数是否小于右边的[ $a -lt $b ] 返回 true。
-ge检测左边的数是否大于等于右边的[ $a -ge $b ] 返回 false。
-le检测左边的数是否小于等于右边的[ $a -le $b ] 返回 true。

布尔运算符

运算符说明 ]举例
-o或运算,有一个表达式为 true 则返回 true[ $a -lt 20 -o $b -gt 100 ] 返回 true。
!非运算,表达式为 true 则返回 false[ ! false ] 返回 true
-a与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。

逻辑运算符

运算符说明举例
&&逻辑的 AND[[ $a -lt 100 && $b -gt 100 ]] 返回 false
ll逻辑的 OR[[ $a -lt 100ll $b -gt 100 ]] 返回 true

字符串运算符
变量 a 为 “abc”,变量 b 为 "efg

运算符说明举例
=检测两个字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。
!=检测两个数是否不相等[ $a -ne $b ] 返回 true。
-z检测左边的数是否大于右边的[ $a -gt $b ] 返回 false。
-n检测左边的数是否小于右边的[ $a -lt $b ] 返回 true。
$检测左边的数是否小于右边的[ $a -lt $b ] 返回 true。

echo命令
字符串输出

$ echo "It is a test"
It is a test
$ echo It is a test
It is a test
$ echo "\"It is a test\""
"It is a test"

变量输出
读入一行,再调用变量输出

$ read name
Amos
$ echo "$name is so smart"
Amos is so smart

转义字符

字符
\n换行
\c不换行
>结果定向至文件,例:echo “It is a test” > myfile
\f换页(formfeed
\t水平制表符
\v垂直制表符

显示命令执行结果

echo `date`
Thu Jul 9 12:05:18 CST 2020

printf 命令
printf 命令模仿 C 程序库(library)里的 printf() 程序。
例:

 printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 

结果

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

例:

# format-string为双引号
printf "%d %s\n" 1 "abc"
# 单引号与双引号效果一样 
printf '%d %s\n' 1 "abc"
# 没有引号也可以输出
printf %s abcdef
# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
$ printf "%s\n" abc def
abc
def
$ printf %s abc def
abcdef$ 
# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n" 
#结果:and 0 

not end~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值