根据Bash中的输入生成以逗号分隔的数字序列

Loo*_*ned 4 bash shell scripting

我发现这里有很多东西可以帮助我,因为我正在学习用Bash编码,而且它们都很接近,但并不完全.

我需要输入一个正整数并在一行上打印到一行,所有都用逗号分隔,在最后一个变量的末尾没有逗号.

这是我到目前为止:

#!/bin/bash
#countdown

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

until ((counter < 1)); do
echo -n ",$counter"
((counter--))
done
Run Code Online (Sandbox Code Playgroud)

它几乎可以解决,但我无法弄清楚如何防止前面的逗号,而不是在最后一个变量后面.

编辑:你们是惊人的.倒在这本书上并在十分钟内学到的东西比在那里一小时的学习时间多.

那么我可以使用某种命令来确保只输入一个数字并确保它必须是正数吗?

在读取上放置if语句以确保其<= 1且只有一个字符的某种方法?

我只有一些基本的C编码背景,所以我有基础但是将它们翻译成BASH比预期更难

cho*_*oba 10

使用seq与-s选项:

seq -s, $counter -1 1 
Run Code Online (Sandbox Code Playgroud)


Yan*_*ang 5

可能使用大括号扩展的简化方式:

#!/bin/bash
#countdown

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

eval printf "%s" {${counter}..2}, 1
Run Code Online (Sandbox Code Playgroud)

测试:

Enter a Number great than 1: 10
10,9,8,7,6,5,4,3,2,1
Run Code Online (Sandbox Code Playgroud)

要验证输入,可以使用正则表达式:

#!/bin/bash
#countdown

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

if [[ ${counter} =~ ^[1-9][0-9]*$ ]]
then
  eval printf "%s" {${counter}..2}, 1
fi
Run Code Online (Sandbox Code Playgroud)