単純なBashスクリプトでは、「予期しないトークン '$#''付近の構文エラー」が発生します。

単純なBashスクリプトでは、「予期しないトークン '$#''付近の構文エラー」が発生します。

私はそれを使用していますDebian 10(Buster) 単純な Bash スクリプトでエラーが発生しました。それがすることは、引数が渡されたことを確認するだけです。ファイルの場合は、そのファイルをエコーできます。

#!/usr/bin/bash
if [ ( '$#' -eq 1 ) && ( -f "$1" ) ]; then
        echo "$1"
fi

exit 1

次のエラーが発生します。

line 2: syntax error near unexpected token `'$#''
line 2: `if [ ( '$#' -eq 1 ) && ( -f "$1" ) ]; then'

私は周りの引用符("、'、引用符なし)のすべての組み合わせを試しましたが、$#常に私が使用している引用符の種類に応じて、これらのエラーメッセージのバリエーションが表示されます。何を探しているのかわかりません。

ベストアンサー1

これには2つの問題があります。まず、単純な[組み込み関数を含めることはできません&&。複数の条件を組み合わせるには、次のうち1つ以上が必要です[

if [ "$#" -eq 1 ] && [ -f "$1" ]; then

$#第二に、拡張する必要があるため、一重引用符は使用できません。あなたのバージョンは'$#' -eq 1次のように動作します。ひも $#1位へ。

bashキーワードを使用すると、すべてがはるかに簡単になります[[

if [[  "$#" -eq 1  &&  -f "$1"  ]]; then

おすすめ記事