quotes "" '', !, &

markyang92·2021년 9월 5일
0

shell-script

목록 보기
2/19
post-thumbnail

quotes ""

  • quotes ""는 한번 사용 시, 적용되는 것임
    • 다음 사용 때도 적용되지 않음

# 경로에 Helloworld.txt 파일이 존재한다.

$ message="Hello*"	# message 변수에 Hello* 로 담김
$ echo "$message"	# echo "Hello*" 적용
Hello*

$ echo $message		# echo Hello* 1) Hello* 명령 작동 2) 그결과가 echo로 나옴
Hellowrold.txt

VAR="/home/*/*/cache"

$ VAR="/home/*/*/cache"

$ echo $VAR --> echo /home/*/*/cache 가 적용됨
/home/user1/a/cache /home/user2/a/cache /home/user3/b/cache

$ echo "$VAR"
/home/*/*/cache --> 문자열 그대로 출력됨

'Hello "World"'

echo 'Hello "World"'
Hello "World"

"Hello 'World'"

echo "Hello 'World'"
Hello 'World'

"Hello \"World\"": " 안에 "

  • Quote " ... "는 내부에 \" 방식을 사용하면 된다.
echo "Hello \"World\""
Hello "World"

'Hello '\''World'\': ' 안에 '

  • Quote ' ... ' 는 내부에 \' 방식으로 사용할 수 없다.
    따라서, ' ... '\' 처럼 ' ... ' 문장을 끝내고 뒤에 \'를 사용하는 방식을 쓴다.
echo 'Hello '\''World'\'
Hello 'World'

ssh cmd

CMD="'ssh -p 8080' user@hostname:/path/path2"
rsync -a src/ -e "${CMD}"
# rsync -a src/ -e "'ssh -p 8080' user@hontname:/path/path2"

'!': history expansion

  • !는 history expansion
    • 명령어에 !가 있다면 원하지 않는 방식으로 명령이 실행될 것이다.
      • 예: ./login -u pll!mark
      • 원하는 동작: pll!mark로 로그인하기
      • 실제 동작: ./login -u pll ; ! mark -> ! mark event not found

  • 해결책
    • '!command'single quote' ' 사용
    • set +H && !command && set -H: History 셋을 임시로 사용 안함
echo !command
event not found: command


set +H
echo !command
set -H
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글