쉘 스크립트에서 변수 사이의 파일에 새로운 줄을 에코하고 싶습니다. 내 코드는 다음과 같습니다.
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
이스케이프 시퀀스는 줄 바꿈을 나타냅니다. -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
또는 실제로 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을 인용하십시오.