以下のスクリプトでは、「abc」ユーザーとして実行した場合、スクリプトは「exit 1」を実行しないでください。それでも「exit 1」を実行してください。
if [ "$(whoami)" != "abc" ] || [ "$(whoami)" != "xyz" ] || [ "$(whoami)" != "pqr" ]
then
exit 1
else
echo "Run remaining script"
fi
答え1
bashスクリプトが私にとってうまくいくようです。実行中です。abc
これは最初のテストがfalse(abc
等しいabc
)であることを意味するため、評価はtrue(abc
等しくないxyz
)の次のテストに続き、スクリプトは取得されるとfalse || true || true
終了しますtrue
。
ユーザーが、、のいずれかである場合は、「残りのスクリプトを実行」するには、abc
ORを使用し、AND条件を逆にするか、同じにしてANDを使用する必要があります。xyz
pqr
==
if
else
したがって、次のいずれかを実行してください。
if [ "$(whoami)" != "abc" ] && [ "$(whoami)" != "xyz" ] && [ "$(whoami)" != "pqr" ]
then
exit 1
else
echo "Run remaining script"
fi
または:
if [ "$(whoami)" == "abc" ] || [ "$(whoami)" == "xyz" ] || [ "$(whoami)" == "pqr" ]
then
echo "Run remaining script"
else
exit 1
fi
答え2
これに代わるものは次のとおりです。
case "$(whoami)" in
abc|xyz|pqr) : # we do nothing here,
;; # and exit the case
*) exit 1 # for all other values (*) : we exit 1, terminating the script
;;
esac
# here, we only continue if the case before had abc, xyz or pqr
...