当输入类似-9的数字时,我正在尝试使用脚本来回显消息。
必须从命令行传递参数
这就是我现在所拥有的。
#!/bin/bash
#Assign1part1
if (( $# != 1 )); then
echo "Error: Must only enter one argument" >&2
exit 1
fi
if (( $1 -lt 1 )); then
echo "Error: Argument must be a positive integer" >&2
exit 1
fi
seq -s, $1 -1 1
答案 0 :(得分:2)
(( ... ))
不是test
。
$ (( -1 < 1 )) ; echo $?
0
$ (( -1 > 1 )) ; echo $?
1
答案 1 :(得分:0)
您需要使用[[
和]]
,而不是((
和))
。前者正在测试,后者是表达式评估,允许!=
而不是-lt
。
最重要的是,你的第一条错误消息略微偏离,这听起来就像你输入的参数多于你应该拥有的参数,即使在你没有输入的情况下也是如此。它会更好地表达为"Must enter exactly one argument"
。
而且,由于$#
是数字,因此在这种特殊情况下,我更倾向于使用数字比较-ne
而不是!=
。
换句话说:
#!/bin/bash
#Assign1part1
if [[ $# -ne 1 ]]; then
echo "Error: Must enter exactly one argument" >&2
exit 1
fi
if [[ $1 -lt 1 ]]; then
echo "Error: Argument must be a positive integer" >&2
exit 1
fi
seq -s, $1 -1 1
使用某些测试数据运行它会产生:
pax> testprog 5
5,4,3,2,1
pax> testprog 9
9,8,7,6,5,4,3,2,1
pax> testprog
Error: Must enter exactly one argument
pax> testprog 1 2
Error: Must enter exactly one argument
pax> testprog -7
Error: Argument must be a positive integer