1.linux系统下shell脚本用case语句编写四则运算 2.linux系统下shell脚本输入数字串。进行反序输出

1.linux系统下shell脚本用case语句编写四则运算 2.linux系统下shell脚本输入数字串。进行反序输出,第1张

原来我�‹.shell写的计算器:[root@liuxiting testdir]# cat calculator.sh #!/bin/bashecho "usage: 1+3 <Enter>,q <Enter>is quit"while [ 1 ]doread -p "->>" str 1>>/dev/nulla=`echo $str |awk -F '+|-|*|/' '{print $1}'`if [ $a == q ]thenbreakfib=`echo $str |awk -F '+|-|*|/' '{print $2}'`o=`echo $str |grep -o "[[:punct:]]" | grep -v "\."`case $o in+) awk 'BEGIN{printf " =%.2f\n",'$a'+'$b'}'-) awk 'BEGIN{printf " =%.2f\n",'$a'-'$b'}'\*) awk 'BEGIN{printf " =%.2f\n",'$a'*'$b'}'/)if [ $b -eq 0 ]then echo 0 Can NOT be denominator!continuefi awk 'BEGIN{printf " =%.2f\n",'$a'/'$b'}'#^) awk 'BEGIN{printf " =%.2f\n",'$a'**'$b'}'*) echo erroresacdone 刚刚写的倒序输出:[root@liuxiting testdir]# cat daoXuShuChu.sh #!/bin/bash echo "usage: 123456 <Enter>, q <Enter>is quit"while [ 1 ]doecho -n "Pleasw enter number : " read n if [ $n == 'q' ]then breakfisd=0 rev="" on=$n echo "$n" while [ $n -gt 0 ] do sd=$(( $n % 10 )) # get Remainder n=$(( $n / 10 )) # get next digit rev=$( echo $rev$sd) done echo "$on in a reverse order $rev" done

楼上的 f1.c清空的原理讲的正确 但是

$ cat <f1.c >>f1.c

会造成死循环 ,瞬间会造成巨大的文件 , 不要误导人了 呵呵

lz 要想明白这个 一定要了解<的到底是干什么的

对于你的命令 cat <f1.c >f1.c 表示

cat 命令以 f1.c 文件作为 stdin,同时以 f1.c 文件作为 stdout

一般的 ,linux中的文件都有一个标记叫做EOF ,End of File ,此标记表示为文本结束符 ,这样一来 f1.c的文件尾部就是EOF , 执行最后一步的重定向时 就将EOF重定向到了 f1.c ,这样 直接将一个EOF重定向到文件的时候表示将文件清空

其实你的命令等效于

$ cat <<EOF >f1.c

>EOF

对于stdin来讲 它是忠实的呈现来源的各个字节的

这个例子没什么实用价值 也就是让人了解 <>的功能以及特点, 逻辑上来讲 从一个文件读入在重新输出到文件本身有什么意思呢.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7976106.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存