【Linux】setコマンド

■ はじめに

https://dk521123.hatenablog.com/entry/2021/09/23/223401

で触れた「set -- xxxx」について
よく分からなかったので調べてみた。

【0】set コマンド

【1】シェルの設定を確認、変更する
 1)エラーがあった場合、そこで打ち止める
【2】現在設定されている変数を一覧表示
【3】位置パラメータをセットする
 1)「set -- xxxx」

【1】シェルの設定を確認、変更する

構文

# シェルオプションを有効にする
set -o シェルオプション

# シェルオプションを無効にする
set +o シェルオプション

# 分かりづれーなー

1)エラーがあった場合、そこで打ち止める

set -o errexit

or

set -e

【2】現在設定されている変数を一覧表示

# 引数なし
set

【3】位置パラメータをセットする

# ここでセット
$ set Hello world!
set Hello world!

$ echo $1
echo $1
Hello

$ echo $2
echo $2
world!

1)「set -- xxxx」

「set -Hello」のように「-」が入ると
オプションとして認識されてしまう。
 => 「set --」の後なら指定可能

http://blog.livedoor.jp/skrbtks_39/archives/177458.html

サンプル

# エラーになってしまう
$ set -Hello
set -Hello
bash: set: -l: invalid option
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]

# 「--」でセット
$ set -- -Hello
set -- -Hello

# 確認
$ echo $1
echo $1
-Hello

参考文献

https://orebibou.com/ja/home/201512/20151203_001/
https://qiita.com/blueskyarea/items/b07568191fbebc9bd32d

関連記事

シェル ~入門編~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ Shebang
https://dk521123.hatenablog.com/entry/2024/02/02/000000
パイプを使ったループで連想配列に値を設定する
https://dk521123.hatenablog.com/entry/2021/09/23/223401
shoptコマンド
https://dk521123.hatenablog.com/entry/2021/09/12/000000
リダイレクト・パイプライン
https://dk521123.hatenablog.com/entry/2021/09/13/000000