私はそれを使用しています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