shell 向上取整
发布网友
发布时间:2022-05-27 08:04
我来回答
共1个回答
热心网友
时间:2023-10-12 12:08
说明:
1. 你搜来的语法没问题
1> 在运行前给你写的脚本授权(假设你的脚本名为test),执行下面的命令
chmod 755 test
2> 然后执行脚本就有结果了,执行:
./test 或者 sh test
2. awk作为shell脚本里的一个分支,兼容c,c++大部分语法,
int($a)==$a?$a:int(int($a*10/10+1))}
判断条件:int($a)==$a
判断结果: int($a)==$a成立的话 选中$a
int($a)==$a不成立,则选中int(int($a*10/10+1))
格式: 条件语句?语句1:语句2
条件成立则 语句1,否则语句2
3. 再写个简单的输入后取整输出的脚本:
#!/bin/sh
# input: a decimal
#output: interger larger and nearest the decimal
echo "Please input the decimal:"
read record
echo “the interger larger and nearest the decimal is:”
awk 'BEGIN{print int("'$record'")==("'$record'")?int("'$record'"):int("'$record'")+1}'追问非常感谢你的回答
你给的脚本和我的脚本都有下面报错,是不是awk用法哪里错了
awk: syntax error near line 1
awk: illegal statement near line 1
可不可以留个QQ,以后不懂问问你
我直接输入
awk ‘print int(1.1)' 会有相同报错
awk '{a=1.1;print int(a)}' 这样是可以的
追答qq: 847969699
注意标点符号:
awk 'BEGIN{print int("'$record'")==("'$record'")?int("'$record'"):int("'$record'")+1}'
第一个'BEGIN 这里的是单引号
第二个"'$record'"这里是双引号 再加一个 单引号
标点符号全用英文输入法
(你copy过去的时候可能符号转为中文的了)
另外vi test
看看脚本里有没有异常的字符(例如行尾多了个^M,有就去掉)
awk ‘print int(1.1)' 语法不对, -->awk ‘BEGIN{print int(1.1)}' ,加上BEGIN就不需要读文件了(预处理),否则就需要加上文件名 -->awk ‘{print int(1.1)}' 文件名
这里发不了图片,有图有证据,有时间才看看百度知道,不一定第一时间回答.