📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の5版が非表示) | |||
| 105行目: | 105行目: | ||
<br> | <br> | ||
<center> | <center> | ||
{| class="wikitable" style="background-color:#fefefe;" | |||
{| class="wikitable" | |+ 数値の比較条件 | ||
|- | |- | ||
! 条件 ! | ! style="background-color:#00ffff;" | 条件 | ||
! style="background-color:#00ffff;" | 比較内容 | |||
|- | |- | ||
| 数値1 -eq 数値2 || 数値1と2が等しい場合に真 | | 数値1 -eq 数値2 || 数値1と2が等しい場合に真 | ||
| 125行目: | 126行目: | ||
<br> | <br> | ||
<center> | <center> | ||
{| class="wikitable" style="background-color:#fefefe;" | |||
{| class="wikitable" | |+ 文字の比較条件 | ||
|- | |- | ||
! 条件 ! | ! style="background-color:#00ffff;" | 条件 | ||
! style="background-color:#00ffff;" | 比較内容 | |||
|- | |- | ||
| -n 文字列 || 文字列の長さが0より大きい場合は真 | | -n 文字列 || 文字列の長さが0より大きい場合は真 | ||
| 141行目: | 143行目: | ||
<br> | <br> | ||
<center> | <center> | ||
{| class="wikitable" style="background-color:#fefefe;" | |||
{| class="wikitable" | |+ ファイルの比較条件 | ||
|- | |- | ||
! 条件 ! | ! style="background-color:#00ffff;" | 条件 | ||
! style="background-color:#00ffff;" | 比較内容 | |||
|- | |- | ||
| ファイル1 -nt ファイル2 || ファイル1がファイル2より新しく作成・更新されていた場合は真 | | ファイル1 -nt ファイル2 || ファイル1がファイル2より新しく作成・更新されていた場合は真 | ||
| 163行目: | 166行目: | ||
|- | |- | ||
| -x <ファイル> || <ファイル>が存在して実行可能であれば真 | | -x <ファイル> || <ファイル>が存在して実行可能であれば真 | ||
|- | |||
| -L <ファイル> || <ファイル>が存在してシンボリックリンクであれば真 | |||
|- | |||
| -s <ファイル> || ファイルサイズが1以上であれば真 | |||
|} | |} | ||
</center> | </center> | ||
<br> | <br> | ||
<center> | <center> | ||
{| class="wikitable" style="background-color:#fefefe;" | |||
{| class="wikitable" | |+ AND / OR / NOT | ||
|- | |- | ||
! 条件 ! | ! style="background-color:#00ffff;" | 条件 | ||
! style="background-color:#00ffff;" | 比較内容 | |||
|- | |- | ||
| ! 条件式 || 条件式が偽なら真(NOT) | | ! 条件式 || 条件式が偽なら真(NOT) | ||
| 179行目: | 187行目: | ||
|} | |} | ||
</center> | </center> | ||
<br> | |||
==== if 文の応用 ==== | |||
条件式に任意のコマンドを使用する。<br> | |||
<br> | |||
if文は、条件式に指定したコマンドの終了ステータスを判定して、条件分岐を行う制御文である。<br> | |||
したがって、条件式には<code>test</code>コマンド以外にも、<code>ls</code>コマンドや<code>grep</code>コマンド等の一般的なコマンドを使用することもできる。<br> | |||
<syntaxhighlight lang="sh"> | |||
if echo "$var" | grep -sq "hoge"; then | |||
echo "hogeが見つかりました。" | |||
fi | |||
# または | |||
if echo "$var" | grep "hoge" 1>/dev/null 2>/dev/null; then | |||
echo "hogeが見つかりました。" | |||
fi | |||
</syntaxhighlight> | |||
<br> | |||
多くの場合、条件式に指定するコマンドで実行結果の出力を行う必要が無いため、<br> | |||
出力を抑制するオプションを指定するか、または、<code>1>/dev/null 2>/dev/null</code>を指定して全ての出力を非表示にするとよい。<br> | |||
例えば、<code>grep</code>コマンドを条件式に指定する場合、<code>-s</code>オプションと<code>-q</code>オプションを同時に指定することで、エラー出力と標準出力を抑制することができる。<br> | |||
<br> | |||
条件式にコマンドを指定しない場合、if文により、直前のコマンドの終了ステータスを表す特殊変数<code>$?</code>を判定する。<br> | |||
<syntaxhighlight lang="sh"> | |||
# コマンドの実行結果をif文で判定する | |||
echo "$var" | grep -sq "hoge" | |||
if [ $? -eq 0 ]; then | |||
echo "hogeが見つかりました。" | |||
fi | |||
</syntaxhighlight> | |||
<br> | |||
終了ステータスを使い回す場合は、任意の変数に格納して終了ステータスを退避することで、特殊変数<code>$?</code>が他のコマンドによって上書きされても影響を受けない。<br> | |||
<syntaxhighlight lang="sh"> | |||
echo "$var" | grep -sq "hoge"; | |||
result=$? | |||
# ...他の処理 | |||
if [ $result -eq 0 ]; then | |||
echo "hogeが見つかりました。" | |||
fi | |||
</syntaxhighlight> | |||
<br> | |||
以下の例では、スーパーユーザかどうかを確認している。<br> | |||
スーパーユーザのIDは常に0であることを利用して、それを確認する。<br> | |||
<syntaxhighlight lang="sh"> | |||
# スーパーユーザのみシェルスクリプトの実行を許可する場合 | |||
if [ "$(id -u)" -ne 0 ]; then | |||
echo -e "スーパーユーザではありません" | |||
exit 1 | |||
fi | |||
# 一般ユーザのみシェルスクリプトの実行を許可する場合 | |||
if [ "$(id -u)" -eq 0 ]; then | |||
echo "一般ユーザではありません" | |||
exit 1 | |||
fi | |||
</syntaxhighlight> | |||
<br> | |||
<br><br> | <br><br> | ||
| 232行目: | 300行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
{{#seo: | |||
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki | |||
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 | |||
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux | |||
|image=/resources/assets/MochiuLogo_Single_Blue.png | |||
}} | |||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:シェルスクリプト]] | [[カテゴリ:シェルスクリプト]] | ||