スクリプトはコマンドライン入力を受け入れませんか?位置パラメータヘルプ[閉じる]

スクリプトはコマンドライン入力を受け入れませんか?位置パラメータヘルプ[閉じる]

こんにちは。ファイル名とオプションで出力する行数を読み取る単純なファイルを作成しようとしていますが、ファイル名を保持するために割り当てた場所引数をスクリプトで許可することはできません。

私のコード:

#
#               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."}

その後、ファイル名を指定しました:「ミッシング」というエラーメッセージが表示されます。

私はここで何が間違っているのかわかりません。

ベストアンサー1

唯一の問題は、最後の行に「-n」オプションがないことです。これは期待どおりに機能します。

sort -nr $filename | head -n $howmany

おすすめ記事