Bash

腳本不接受命令行輸入?位置參數幫助

  • June 28, 2017

您好我正在嘗試創建一個簡單的文件,該文件讀取文件名和可選的輸出行數,但我無法讓我的腳本接受我分配用於保存文件名的位置參數。

我的程式碼:

#
#               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”

不知道我在這裡做錯了什麼。

唯一錯誤的是您在最後一行中缺少“-n”選項。這按您預期的方式工作。

sort -nr $filename | head -n $howmany

與bashBedlam 的 answer相同的原因,但不同的程式碼,(不需要-n選項,這節省了兩個字節),只需更改此行:

howmany=${2:-10}

對此:

howmany=${2:--10}

引用自:https://unix.stackexchange.com/questions/373812