Bash
腳本不接受命令行輸入?位置參數幫助
您好我正在嘗試創建一個簡單的文件,該文件讀取文件名和可選的輸出行數,但我無法讓我的腳本接受我分配用於保存文件名的位置參數。
我的程式碼:
# # 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}