[解決済み] bashで変数に改行を埋め込もうとする [重複].
2022-07-16 01:15:55
質問
があります。
var="a b c"
for i in $var
do
p=`echo -e $p'\n'$i`
done
echo $p
最後のエコーを表示させたい
a
b
c
変数pが改行を含むようにしたいことに注意してください。どうすればいいのでしょうか?
どのように解決するのですか?
概要
-
挿入
\n
p="${var1}\n${var2}" echo -e "${p}"
-
ソースコードに改行を挿入する
p="${var1} ${var2}" echo "${p}"
-
p="${var1}"$'\n'"${var2}" echo "${p}"
詳細
1. 挿入方法
\n
p="${var1}\n${var2}"
echo -e "${p}"
echo -e
は、2つの文字
"\n"
を改行として解釈する。
var="a b c"
first_loop=true
for i in $var
do
p="$p\n$i" # Append
unset first_loop
done
echo -e "$p" # Use -e
余分な先頭の改行がないようにする
var="a b c"
first_loop=1
for i in $var
do
(( $first_loop )) && # "((...))" is bash specific
p="$i" || # First -> Set
p="$p\n$i" # After -> Append
unset first_loop
done
echo -e "$p" # Use -e
関数を使う
embed_newline()
{
local p="$1"
shift
for i in "$@"
do
p="$p\n$i" # Append
done
echo -e "$p" # Use -e
}
var="a b c"
p=$( embed_newline $var ) # Do not use double quotes "$var"
echo "$p"
2. ソースコードに改行を挿入する
var="a b c"
for i in $var
do
p="$p
$i" # New line directly in the source code
done
echo "$p" # Double quotes required
# But -e not required
余分な先頭の改行がないようにする
var="a b c"
first_loop=1
for i in $var
do
(( $first_loop )) && # "((...))" is bash specific
p="$i" || # First -> Set
p="$p
$i" # After -> Append
unset first_loop
done
echo "$p" # No need -e
関数を使う
embed_newline()
{
local p="$1"
shift
for i in "$@"
do
p="$p
$i" # Append
done
echo "$p" # No need -e
}
var="a b c"
p=$( embed_newline $var ) # Do not use double quotes "$var"
echo "$p"
3. 使用方法
$'\n'
(移植性が低い)
バッシュ
と
zsh
を解釈する
$'\n'
を改行として解釈します。
var="a b c"
for i in $var
do
p="$p"$'\n'"$i"
done
echo "$p" # Double quotes required
# But -e not required
余分な先頭の改行がないようにする
var="a b c"
first_loop=1
for i in $var
do
(( $first_loop )) && # "((...))" is bash specific
p="$i" || # First -> Set
p="$p"$'\n'"$i" # After -> Append
unset first_loop
done
echo "$p" # No need -e
関数を使う
embed_newline()
{
local p="$1"
shift
for i in "$@"
do
p="$p"$'\n'"$i" # Append
done
echo "$p" # No need -e
}
var="a b c"
p=$( embed_newline $var ) # Do not use double quotes "$var"
echo "$p"
出力はすべて同じ
a
b
c
この回答の投稿者に感謝します。 kevinf , ゴードン・デイヴィソン , l0b0 , Dolda2000 および トリプルイー .
EDIT
- 参照 BinaryZebraの回答 を参照してください。
-
Abhijeet Rastogi さんの回答
そして
Dimitry さんの回答
を回避する方法を説明します。
for
のループを回避する方法を教えてください。 バッシュ のスニペットです。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
-
[解決済み] シェルプログラミングで「export」は何をするのですか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] shで文字列の中に改行を入れるにはどうしたらいいですか?
-
[解決済み】シェル変数に引用符で囲むのはいつ?
-
[解決済み] bash に次の行に進むように指示する方法
-
[解決済み] find "の結果をカウントするのに最適な方法は何ですか?
-
[解決済み] Bashはどのように異なるディレクトリコンテキストでコマンドを実行できますか?
-
[解決済み] シェルスクリプトからウェブブラウザを起動する方法は?
-
[解決済み] bashで端末の最終行を削除して置換するには?
-
[解決済み] unset の使用と変数への空の設定
-
[解決済み] Bashでディレクトリではなく、ファイルだけをリストアップする方法は?
-
[解決済み] homebrew パッケージがインストールされているかどうかを検出する