Skip to content

Commit

Permalink
add 1/7
Browse files Browse the repository at this point in the history
  • Loading branch information
YusukeKato committed Jan 7, 2025
1 parent 337eb10 commit b5b19ed
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions markdown/2025/0107.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# メタデータ
- title=echoコマンドで"-n"をそのまま出力したい
- description=Bashのechoコマンドで"-n"をオプションとして解釈せずに文字列としてそのまま出力する方法を紹介します。
- date=2025年1月7日(火)
- update=2025年1月7日(火)
- math=false
- tag=tech

## 概要

Bashのechoコマンドで`-n`をオプションとして解釈せずに文字列としてそのまま出力する方法を紹介します。

## 問題点

下記のようにコマンドを実行すると`-n`はオプションとして解釈されて、
結果としては何も出力されません。

```
$ echo "-n"
# 何も出力されない
```

Bashでは`--`をつけると「これ以降はオプションではない」ことを意味しますが、
どうやらechoではこれは使えないようです。

```
$ echo -- "-n"
-- -n
```

## 解決策

たとえば-nの前に半角スペースを入れて" -n"とすると文字列として解釈されます。

```
$ echo " -n"
-n
```

しかしこれだと当然のことながら半角スペースも一緒に出力されてしまうので、
同じ要領で`\0-n`にするとよさそうです。
`\0`はNULLのエスケープ文字です。
また、エスケープ文字を解釈するために`-e`をつけます。

```
$ echo -e "\0-n"
-n
```

注意点として実行環境によっては`\0`の挙動が変わるかもしれません。

以上です。

0 comments on commit b5b19ed

Please sign in to comment.