美文网首页上嵌学习笔记
Linux基础shell,无C高级的预习(4)

Linux基础shell,无C高级的预习(4)

作者: 酸菜牛肉 | 来源:发表于2016-12-09 20:54 被阅读7次

shell脚本

1,字符串的操作
1)若打印时有空格,则应“$变量名”;
若字符串赋值时,若值中有空格,变量名 = “hello, world!”应用双引号括起来
2)字符串的长度
lenth=${#string}

#!bin/bash
string="hello,"
stirng1="shell!"
echo ${#stirng}

#后不是字符串表示的是字符串的长度。
3)字符串的分割
nstr=${string:a:b}

#!/bin/bash
string="hello,"
string1="shell!"
echo nstr=${string:a:b}
echo nstr1=${string1:a:b}

把字符串string从第a个之后开始截取b个字符,把值赋给新的变量
2,只读readonly

#!/bin/bash
readonly num=7
echo $num
num=66
echo $num```
打印出来会在第二次赋值时出错,两次打印结果均为7。(只读变量不可更改。)
3,清除变量的值

num=333
echo $num
unset num
echo $num```
使变量的值为空
4,注意问题
shell程序必须指定解释程序的第一行必须是:#!/bin/bash;
赋值时等号两边不能加空格。
5,read
从键盘中获取数值

#!/bin/bash
echo "input num:"
read num
echo $num

read:在没有输入时,则一直等待输入
read 变量1 变量2 变量3
此情况不建议使用,需要输入空格
建议使用:read 变量1
read 变量2
read 变量3

#!/bin/bash
echo "input date:year month day
read year month day
echo "press key to contine:"
read KEY
echo "the date is:$year/$month/$day"

6,shell的三大语句
说明型语句、功能型语句、结构分支语句
(1)说明型语句
以#开头的语句,至行末均为说明型语句,说明型语句不解释执行(整行),即注释;
说明型语句的位置可以是程序中的任何位置,可以放在解释执行语句之后,从#开始的部分只注释一行
(2)功能型语句
系统命令,自写程序....
(3)结构型语句
多路分支语句,循环语句,循环控制语句,测试语句,条件语句
结构型语句
7,加、减、乘、除、取余
乘法要使用转译字符
expr let:针对装束做简单的加、减、乘、除、取余

expr:
sum=`expr $num + $num1`
sum1=`expr $num \* $num1`
let:
let sum=num+num1
let sum1=num\*num1```
* 文件比较运算符
`-e filename`:如果filename 存在为真
`-d filename`:如果filename 为目录为真
`-f filename`:如果filename 为常规文件为真
`-L filename`:如果filename 为符号链接为真
`-r filename`:如果filename 可读为真
`-w filename`:如果filename 可写为真
`-x filename`:如果filename 可执行为真
`filename1 -nt filename2`:如果filename1比filename2新,则为真
`filename1 -ot filename2`:如果filename1比filename2新,则为真
* 整数测试
`-eq`:相等
`-ne`:不等于
`-gt`:大于
`-ge`:大于等于
`-lt`:小于
`-le`:小于等于
字符串比较:
`-z string`:string长度为零时,为真
`-n string`:string如果长度非零,为真
`string1=stirng2`
`string1!=string2`
* 逻辑操作符:
`&&`:逻辑与
`事件1 && 事件2`:当事件1和事件2都为真,则为真
`||`:逻辑与
`事件1||事件2`:当事件1或事件2为真,则为真
`-a:and`
`-o:or`

* 常见变量:
`$?`:命令执行后返回的状态,返回0表示成功执行,其他值表明执行错误
`$*`:所有参数列表
`$@`:所有参数列表
`$#`:传递到脚本的参数个数
`$0`:可执行命令本身,不是位置命令参数
`$1~$n`:分别表示第一至第n个位置的参数
`echo -n`:不换行输出!

if语句
(1)

if [ 条件 ]
then
命令
fi```
(2)

if [ 条件 ]
then
命令
elif [ 条件 ]
then
命令
else
命令
fi```

case

case 值 in
值1)
命令
;;
值2)
命令;;
值3)
命令;;
esac


for循环

for 值 in 值列表
do
命令
done

while循环

while 条件
do
命令
done

###总结及计划:
今天刚刚接触shell编程,所以许多东西还要不断琢磨,感觉shell编程以后能提高使用终端的效率,感觉还是蛮重要的,所以打算明天自习的时间好好复习,尝试使用shell编写一些简单的脚本,并且继续预习C语言高级的部分。

###作业:
1,使用while循环实现九九乘法表

!/bin/bash

for i in 1 2 3 4 5 6 7 8 9
do
for j in 1 2 3 4 5 6 7 8 9
do
sum=expr $i \* $j
printf "$j * $i = $sum "
if [ $j -eq $i ]
then
break;
fi
done
echo
done```
2,for或者while实现打印等腰三角形,行数由用户输入

#!/bin/bash
echo -n "input a num:"
read num
i=1
while [ $i -le $num ]
do
    j=1
    #let sum=$num-$i
    while [ $j -le $(($num-$i)) ]
    do
        echo -n " "
        let j++
    done
    let sum1=2*$i-1
    j=1
    while [ $j -le $sum1 ]
    do
        echo -n "*"
        let j++
    done
    let i++
    echo

做这道题出现的问题,对j的初始化位置未放置正确,导致浪费大量时间调试,主要原因:对全局变量和局部变量作用域的理解不够到位
3,写一个脚本,判断给定目录下的文件属性

#!/bin/bash
echo "Please enter a filename:"
read filename
if [ -e $filename ];then
    if [ -f $filename ];then
        echo "$filename is a 常规文件"
    elif [ -d $filename ];then
        echo "$filename is a 目录"
    elif [ -L $filename ];then
        echo "$filename is a 复航链接"
    fi
else
    echo "文件不存在"
fi```
4,预习C语言课本前三四五章,下周进入C部分的学习
已完成

相关文章

  • Linux基础shell,无C高级的预习(4)

    shell脚本 1,字符串的操作1)若打印时有空格,则应“$变量名”;若字符串赋值时,若值中有空格,变量名 = “...

  • Linux基础知识目录

    硬链接、软链接重定向shell编程基础搭建vsftpdLinux C 编程基础Linux C 进程控制基础Linu...

  • 2019-01-25

    Linux系统Shell编程指南 前言 适合人群:有类似C编程基础的人 一、Shell编程介绍 Shell解释型语...

  • [上嵌学习系列] 上嵌第一个月课程如何学

    内容:Linux基础,C语言基础,C语言高级要求:1) 掌握Linux基本命令2) 掌握程序逻辑3) 掌握开发基本...

  • Shell编程基础(一)

    Shell脚本编程基础 shell概念: shell是一个用C语言编写的程序,他是用户使用Linux的桥梁,它是一...

  • 嵌入式学习笔记19.11.20

    Linux 的shell基本命令: shell的版本:1.Bourne Shell(sh) 2.C Shell(c...

  • shell基础

    Linux学习 一、shell介绍 Linux shell基础 什么是shell shell是一个命令解释器,提供...

  • Shell学习

    Linux Shell基础教程 (一) (二) Linux Shell简明教程(推荐) (一) (二) Linux...

  • Linux Shell: 各种tips

    通用Linux中执行shell脚本的4种方法总结hbase shell基础和常用命令详解 2.字符串Shell脚本...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

网友评论

    本文标题:Linux基础shell,无C高级的预习(4)

    本文链接:https://www.haomeiwen.com/subject/gwdemttx.html