쉘 스크립트는 파일에 줄 바꿈 $ var2 echo “$ logwrite”>> /Users/username/Desktop/user.txt 현재

쉘 스크립트에서 변수 사이의 파일에 새로운 줄을 에코하고 싶습니다. 내 코드는 다음과 같습니다.

var1 = "Hello"
var2 = "세계!"
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이스케이프 시퀀스는 줄 바꿈을 나타냅니다. -eecho에 인수를 전달하면 이스케이프 시퀀스를 해석 할 수 있습니다.

더 단순화 될 수도 있습니다.

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

또는 실제로 var가 필요하지 않습니다.

echo 'Hello' >> /Users/username/Desktop/user.txt
echo 'World!' >> /Users/username/Desktop/user.txt

john t answer에 문제가 있습니다 .var 중 하나에 \ n 문자열 (또는 \ t와 같은 다른 시퀀스)이 있으면 번역됩니다. printf로 대답과 비슷한 것을 얻을 수 있습니다.

printf '%s\n%s\n' 'Hello' 'World!'

또한 흠. 나는 당신이 변수 $ logwrite에 답을 작성하는 것을 본다. 이것이이 변수의 유일한 사용이라면 의미가없는 것 같습니다.

특히 로그에 추가 할 줄이 많은 경우 here-doc가 더 읽기 쉽습니다.

cat >> /Users/username/Desktop/user.txt <<EOF
Hello
World
EOF

(이 단어 EOF는 선택할 수있는 구분 기호입니다. 어떤 단어라도 가능합니다).

heredoc은 큰 따옴표와 같이 $ variables를 확장합니다. 이것을 원하지 않으면 << “EOF”와 같이 heredoc을 인용하십시오.


답변