シェルスクリプトの変数の間にあるファイルに改行をエコーしたい。これが私のコードです:
var1 = "Hello" var2 = "World!" logwrite = "$ var1 [ここに新しい行を挿入します] $ var2 echo "$ logwrite" >> /Users/username/Desktop/user.txt
現在、スクリプトを実行すると、user.txtファイルに次のように表示されます。
こんにちは世界!
見せたい:
こんにちは世界!
どうすればよいですか?
編集:これが私のシェルスクリプトです:
echo -n "あなたの名は何ですか?" 最初に読みます echo -n "あなたの姓は何ですか?" 最後に読みます echo -n "ミドルネームは何ですか?" ミドルを読む echo -n "誕生日は何ですか?" 誕生日を読む echo -e "名:$ first/n姓:$ last/nミドル名:$ middle/n誕生日:$ birthday ">> /Users/matthewdavies/Desktop/user.txt qlmanage -p"〜/ Desktop/user。 txt"
var1="Hello"
var2="World!"
logwrite="$var1\n$var2"
echo -e "$logwrite" >> /Users/username/Desktop/user.txt
説明:
\n
エスケープシーケンスは、改行を示します。 -e
echoへの引数は、エスケープシーケンスの解釈を有効にします。
さらに簡略化することもできます。
var1="Hello"
var2="World!"
echo -e "$var1\n$var2" >> /Users/username/Desktop/user.txt
あるいは:
echo -e "Hello\nWorld! " >> /Users/username/Desktop/user.txt
var1='Hello'
var2='World!'
echo "$var1" >> /Users/username/Desktop/user.txt
echo "$var2" >> /Users/username/Desktop/user.txt
または実際には変数は必要ありません:
echo 'Hello' >> /Users/username/Desktop/user.txt
echo 'World!' >> /Users/username/Desktop/user.txt
ジョンtの回答に問題があります。varのいずれかに\ n文字列(または\ tのような他のシーケンス)があった場合、それらは翻訳されます。 printfで彼の答えに似たものが得られます。
printf '%s\n%s\n' 'Hello' 'World!'
またね。答えを変数$ logwriteに作成しているようです。これがこの変数の唯一の使用である場合、それは無意味に思われます。
ヒアドキュメントは、ログに追加する行が多い場合は特に、より読みやすくなると思います。
cat >> /Users/username/Desktop/user.txt <<EOF
Hello
World
EOF
(このWord、EOFは、選択できる区切り文字です。任意のWordにすることができます)。
ヒアドキュメントが二重引用符のように$ variablesを展開することに注意してください。これが不要な場合は、<< "EOF"のように、ヒアドキュメントを引用します。