用于倒计时传递参数的Shell脚本

时间:2013-06-12 03:28:51

标签: linux bash shell scripting

所以我今晚正在开展一个项目并假设我的理解很差,要求是创建一个脚本来取一个数字并在同一行用逗号计数到1。

这里的一些人向我介绍了seq命令,我正在路上。

原来需要从命令行参数中获取变量整数。

我现在拥有的:

#!/bin/bash
#countdown

read -p "Enter a Number great than 1: " counter

seq -s, $counter -1 

需要在行之后进行参数,例如/ assign1p1 5然后输出5,4,3,2,1

我看过$ 1用作参数标记?这是如何工作的?

4 个答案:

答案 0 :(得分:1)

使用三个参数

对您的用例正确调用seq是:

  

seq [OPTION] ......最后一次增加

要使用定义的分隔符将起始值减少到1,请尝试类似于此示例的内容:

$ set -- 5
$ seq -s, $1 -1 1
5,4,3,2,1

显然,脚本中不需要调用set,但这是在命令行测试的好方法。

答案 1 :(得分:0)

传递给您脚本的命令行参数是$1$2等。

#!/bin/bash

seq -s, $1 1
echo

如果您想要使其更加健壮,您可能需要验证用户是否传递了正确数量的参数,即变量$#

#!/bin/bash

if (( $# != 1 )); then
    echo "Usage: $0 num" >&2
    exit 1
fi

seq -s, $1 1
echo

答案 2 :(得分:0)

从命令行传递给脚本的参数包括:$ 0,$ 1,$ 2,$ 3。 。

$ 0是脚本本身的名称,$ 1是第一个参数,$ 2是第二个参数,$ 3是第三个参数,依此类推。 [2] $ 9后,参数必须括在括号中,例如$ {10},$ {11},$ {12}。

答案 3 :(得分:0)

如果出于某种原因您不想使用seq

a=$1
for (( b = a; b > 0; b-- ))
do
  (( b == a )) || printf ,
  printf $b
done
相关问题