質問: bashで変数が設定されているかどうかを調べる方法は? bashで変数が設定されているかどうかはどうすればわかりますか?たとえば、ユーザーが関数に最初のパラメータを指定したかどうかを確認する方法はありますか。function a { # if $1 is set ? }
回答: 未設定の場合は終了しますこれは私のために働きました。パラメータが設定されていない場合は、エラーメッセージを表示してスクリプトを終了するようにしました。#!/usr/bin/env bash set -o errexit # get the value and empty validation check all in one ver="${1:?you must pass a version of the format 0.0.0 as the only argument}" 実行するとエラーで戻りますpeek@peek:~$ ./setver.sh ./setver.sh: line 13: 1: you must pass a version of the format 0.0.0 as the only argument チェックのみ、終了なし - 空と未設定は無効値がset = validまたはunset/empty = invalidかどうかを確認するだけの場合は、このオプションを試してください。tset="good val" tempty="" unset tunset if [ "${tset:-}" ]; then echo "valid"; else echo "invalid";fi # valid if [ "${tempty:-}" ]; then echo "valid"; else echo "invalid";fi # invalid if [ "${tunset:-}" ]; then echo "valid"; else echo "invalid";fi # invalid または、短いテストでも;-)[ "${tset:-}" ] && echo "valid" || echo "invalid" [ "${tempty:-}" ] && echo "valid" || echo "invalid" [ "${tunset:-}" ] && echo "valid" || echo "invalid" チェックのみ、終了なし - 空のみが無効これが質問に対する答えです。値がset/empty = validまたはunset = invalidであるかどうかを確認するだけの場合は、これを使用します。注意、 "..- 1}"の "1"は意味がありません。(xのように)何でも構いません。tset="good val" tempty="" unset tunset if [ "${tset+1}" ]; then echo "valid"; else echo "invalid";fi # valid if [ "${tempty+1}" ]; then echo "valid"; else echo "invalid";fi # valid if [ "${tunset+1}" ]; then echo "valid"; else echo "invalid";fi # invalid ショートテスト[ "${tset+1}" ] && echo "valid" || echo "invalid" [ "${tempty+1}" ] && echo "valid" || echo "invalid" [ "${tunset+1}" ] && echo "valid" || echo "invalid" 私はこの答えを@ mklement0(comments)に捧げました。参照 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/v3_chap02.html#tag_18_06_02