フィッシュ(おなじみのインタラクティブシェル)で変数が空であるかどうかを確認したいと思います。
if test "$argv" = null
# do something...
else
# do something else...
答え1
私は「魚」を具体的に知りませんが、標準的な「テスト」を知っています。
努力する:
test "$argv" = ""
または
test "x$argv" = x
または
test -z "$argv"
これは、設定されていないか空であるかをテストすると仮定します。これら2つのケースのうち1つだけが必要な場合は、シェル固有の変数拡張修飾子が必要です。
2番目の例は、移植性を高めるためのコードによく見られます。 null パラメーターは時々失われるように見えるので、これを防ぎます。
3番目の例は、空のtest
文字列をテストするオプションです。
答え2
フィッシュについてはよくわかりませんが、他のシェルと同様に、未定義の変数と空の変数の区別があるようです。
FAQを見ればそうなのでしょう。変数が定義されているかどうかをテストするwith をset -q var
使用して、string length -q
空でない文字列が含まれていることを確認します。
たとえば、スクリプトの最初のパラメーターが定義されているか、空であるか空でないことを確認するには、次のようにします。
#!/usr/bin/fish
if not set -q argv[1]
echo 'not defined'
else if not string length -q -- "$argv[1]"
echo 'defined but empty'
else
echo 'defined and non-empty'
end
未定義の変数と定義されているが空の変数の違いを気にしない場合は、最初のテストをスキップしてください。未定義の値は、二重引用符で囲まれている場合は空の文字列に展開されます。