0

所以我今晚正在做一个项目,并根据我的理解不足假设要求创建一个脚本来获取一个数字并在同一行上用逗号倒数到 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

4 回答 4

1

使用三个参数

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

seq [选项]... FIRST INCREMENT LAST

要使用定义的分隔符将起始值减至 1,请尝试类似于此示例的操作:

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

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

于 2013-06-12T03:38:46.833 回答
0

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

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

于 2013-06-12T03:38:18.723 回答
0

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

a=$1
for (( b = a; b > 0; b-- ))
do
  (( b == a )) || printf ,
  printf $b
done
于 2013-06-12T03:42:02.563 回答
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
于 2013-06-12T03:34:10.957 回答