Ubuntu学习 输入和输出及流程控制(5)

本文详细介绍了Ubuntu Shell中的输入输出处理,包括echo命令的使用、read命令读取信息,以及文件重定向的各种操作。此外,还讨论了引号的差异,如双引号、单引号和反引号的用途。文章还涵盖了流程控制结构,如for循环和until循环,以及测试语句,如文件属性测试和数值、字符串比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入指的是shell程序读入输出。
输出指的是shell程序运行结果的处理。
输出通常使用echo命令
eg:

echo $str
echo $str >file
echo $str >>file

第二行>为覆盖,第三行>>为追加。

echo输出内容使用格式控制字符
\c:输出完毕不换行
\t:输出后跳格相当于Tab
\n:输出后换行

read 命令读取信息
如果只读入一个变量,会把所有输入信息赋给该变量,’Enter’结束输入。
如果输入多个变量,用空格隔开,输入时也用空格隔开。
读取语句后添加>filename表示从文件中提取数据,并赋给变量。

eg:

    read var1
     This cannot be repair.
     echo $var1
    read var1 var2 var3
    This cannot be repair.
    echo $var1 $var2 $var3
    echo $var1
    echo $var2
    echo $var3

简单程序实例
eg:

 #!/bin/bash
 #read.sh
 echo please enter your name:
 read varl
 echo hello $varl

文件重定向
command 1为标准输出,2*为标准输出的错误*
command > filename 覆盖该文件内容
command >> filename 追加到该文件内容
command 1 > filename 与没有1相同
command > filename2>&1把标准输出和标准错误一起重定向到一个文件中
command > filename2>>&1把标准输出和标准错误一起追加到一个文件中
command 2> filename把标准输出的错误重定向到一个文件中
command2 >> filename把标准输出的错误追加到另一个文件中
command < filename > filename2输入信息来自filename,输出信息指向filaname2
command < filename 把command命令以filename作为标准输入

eg:

ls > ls.out
ll > ls.out
ls ne 2> ls.error
ll ne 2>>ls.error
cat < ls.error
vi q.sh
*.sh
ZZ
ll <q.sh> list.out
read varl <q.sh
echo <q.sh
...

引号的使用
双引号表示引用一个字符串,字符串中特殊符号依旧作用。
单引号中特殊符号忽略只显示特殊符号。
反引号用于执行引号中的系统命令。
反斜线用于转义。

eg:

var1=1000
echo "hello linux $var1"
echo 'hello linux $var1'

单引号内部可以套双引号,双引号内部使用双引号需要使用单斜线转义。同样单引号内部再次使用单引号也需要使用单斜号进行转义。
eg:

echo "hello "linux""
echo "hello \"linux\""
echo 'hello "linux"'
echo 'hello \'linux\''
echo 'hello 'linux''

反引号的使用
使用反引号用于执行系统命令
eg:

var1=`expr 1 + 1`
echo $var1
var2=`expr 1+1`
echo $var2

需要注意的是算术运算数字和符号之间需要使用空格隔开,否则输出则为算式而非结果

测试语句
测试,指对变量的大小、字符串、文件属性等内容进行判断。
test命令可用于字符串、数字、文件状态等内容的测试。
返回0表示测试成功,返回1表示测试失败。

-d 测试文件是否是目录文件
-f 测试文件是否是正规文件
-L 测试文件是否是符号连接
-x 测试文件是否可执行
-s 测试文件是否非空
-w 测试是否可写
-u 测试文件是否有suid位设置
-r 测试文件是否可读

数值测试
指的是比较两个数值的大小或相等关系
1。test 第一个操作数 第二个操作数
2。[第一个操作数 数值比较符 第二个操作数]

数值比较符
-eq 两数是否相等
-ne 两数是否不相等
-le 第一个数是否不大于第二个数
-ge 第一个数是否不小于第二个数
-gt 第一个数是否大于第二个数
-lt 第一个数是否小于第二个数

逻辑测试
指的是将多个条件进行逻辑运算
-a 逻辑与
-o 逻辑或
! 逻辑否

字符串测试
指的是比较两个字符串是否相等,或者判断一个字符串是否为空

test 字符串比较符 字符串
test 字符串1 字符串比较符 字符串2
[字符串比较符 字符串]
[字符串1 字符串比较符 字符串2]

= 测试是否相等
!= 测试是否不相等
-z 测试是否空字符串
-n 测试是否非空字符串

流程控制结构
使用逻辑判断,针对结果执行不同语句
顺序结构
分支结构
循环结构

if 条件
    then 命令1
fi

if 条件
    then 命令1
    else 命令2
fi

if 条件1
    then 命令1
    elif 条件2
        then 命令2
        else 命令3
fi

if 条件1 ;then 命令1
elif 条件2 ;then 命令2
else 命令3
fi

流程控制结构
eg:

#!/bin/bash
#!judge.sh
i=$[ $1 % 2]
if test $i -eq 0;then
    echo oushu
else
    echo jishu
fi
#!/bin/bash
#test.sh
if test -z $1
then echo "please input a filename"
else
if test -w $1
    then echo "writeable"
else
    echo "unwriteable"
fi
if test -x $1
    then echo "excuteable"
else
    echo "unexcutable"
fi
fi

for语句使用方法

for 变量名 in 列表
do
    命令1
    命令2
    ...
done

列表是一个使用空格分割取值的一个列表,每一次循环变量的取值依次从列表中索取。

eg:

#!/bin/bash
#for.sh
for char in a b c d f
do
    echo $char
done

until循环

until 条件
do
    命令1
    命令2
    ...
done

eg:

#!/bin/bash
#sumup.sh
sum=0
i=1
until [ i -gt 100 ]
do
    sum=$[ $sum + $i ]
    i=$[ $i + 1 ]
done
echo $sum

啊啊啊啊啊。。。累得快死。。。这一段适应真不容易,多敲代码慢慢能不出错就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值