脚本不接受命令行输入?位置参数帮助

脚本不接受命令行输入?位置参数帮助

您好,我正在尝试创建一个简单的文件,该文件读取文件名和可选的要输出的行数,但我无法让我的脚本接受我分配用于保存文件名的位置参数。

我的代码:

#
#               task_4-1.sh filename [howmany] - optional parameter
#
#
#
# Read a file containing the names of and number of albums of artist in the album collection.
# Program will print the N highest lines of Artist with the highest Album count int he collection
# Default N is 10 
# One arguement for the name of the input file and a second optional line for how many lines to print.

#!\bin\bash

#Variable to accept the filename will print an error message if this value is left null 

filename=${1:?"missing."}

#Optional parameter that controls how many lines to Output to shell
howmany=${2:-10}

sort -nr $filename | head $howmany

当我尝试在命令行上运行代码时:

task_4-1.sh albumnumber.txt 10

我收到错误消息头:10 没有这样的文件或目录。如果我将参数分配给此括号语法:

filename=${filename:?"missing."}

然后我收到错误消息我指定了文件名:“missing”

不知道我在这里做错了什么。

答案1

唯一的问题是你缺少最后一行中的“-n”选项。这按照您预期的方式工作。

sort -nr $filename | head -n $howmany

答案2

原因与bashBedlam 的回答's,但是代码不同,(-n不需要选项,这样可以节省两个字节),只需更改此行:

 howmany=${2:-10}

对此:

 howmany=${2:--10}

相关内容