shell script 간단 질문

apollo97의 이미지

책보다가...

tempfile=`tempfile 2>/dev/null` || tempfile=/temp/test$$ temp 밑에 test$$ 으로 임시파일을 만든다

이렇게만 적혀있어서... 도데체 위에있는 tempfile 2>/dev/null 은 뭔지 첨 보는거라서... 혹시 오타가 아닌지 그리고 tempfile=/temp/test$$ 이렇게 하면

파일 만들어 지나요? 안만들어져서...

마지막 질문 변수=파일경로 이렇게 쓰면 변수에는 뭐가 저장이 되는지요 예) temp=/root/file

읽어주셔서 감사합니다.

apollo97의 이미지

tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

The first line above tries to create a temporary file using the utility tempfile. If it fails, a temporary file is manually set up in /tmp. The second line above sets up a trap routine.

tempfile 이란 명령어가 있나요?

검객의 이미지

이름이 tempfile인 변수를 선언하는 부분입니다.
변수 tempfile의 값은 둘중 하나가 됩니다.

첫째, tempfile 이라는 명령어의 결과를 변수의 값으로 선언 합니다.
tempfile 명령어의 결과는 어떤 파일명이 되는것 같네요...

tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
--------
|
+---- 요놈이 tempfile이라는 명령어를 나타냅니다. 나머지 부분은 tempfile 변수를
나타냅니다. 변수명과 명령어의 이름이 같아서 헷갈릴수 있겠네요.

둘째, tempfile의 명령어가 정상적으로 실행되지 않으면
변수 tempfile의 값은 /tmp/test$$가 됩니다. 그냥 직접 선언하는 거죠. 이걸보면
tempfile 명령어의 결과도 어떤 파일명이 된다는걸 짐작할수 있네요.

------------------------------------------------------------------
2>/dev/null tempfile 명령어의 결과를 화면으로 출력하지 않기위해서 해주는 겁니다.
쉘 스크립트보면 많이 나오는 부분입니다.

temp=/root/file 이렇게 하면 temp라는 변수의 값은 /root/file이 되죠..
cat $temp 이렇게 사용하면 /root/file 파일의 내용이 화면에 출력되겠죠..

tempfile=/temp/test$$ 이렇게 하면 tempfile이라는 변수의 값은 /temp/test$$가 되죠.
파일이 생성되지는 않죠.. 굳이 생성하려면
touch $tempfile 이런식으로 생성해 줘야합니다.

----------------------------------------------------------------------------

우리 항시 웃고 살아요 ^^

doodoo의 이미지

tempfile=`tempfile 2>/dev/null` || tempfile=/temp/test$$

아마도
명령어로 tempfile 이란 실행파일이 있습니다.
그래서
tempfile=`tempfile` 이 명령의 결과로, 즉 우측의 tempfile이라는 명령의 결과를
왼쪽의 tempfile 에 넣는겁니다..단 그 에러메세지를 보고 싶지 않으니 /dev/null로
에러 메세지를 보내서 화면에 보이지 않게 하는겁니다
0 은 stdin , 1은 stdout, 2는 stderr 입니다.(콘솔로 따져서)

그 다음의 || 는 그 앞의 tempfile=`tempfile 2>/dev/null` 까지가 실패하면 이라는 뜻입니다.
만약 && 를 썼으면 성공하면 이라는 뜻이지요

tempfile=/temp/test$$ 중 뒤의 $$는 PID 입니다. 즉 자기 쉘이 실행될때의 프로세서
번호입니다

doodoo@homes:~$ ps
  PID TTY          TIME CMD
20588 pts/5    00:00:00 bash
21447 pts/5    00:00:00 ps
doodoo@homes:~$

방금 ps 명령의 pid는 21447번이지요..고로
/temp/test3355 등의 파일을 tempfile 로 쓰겠다 그런 뜻 일겁니다.

틀린것 있으면 지적해 주세요..~~

ironiris의 이미지

제가 답변드릴수 있는 것은 아니지만
질문을 하시거나 일을 부탁할때

그것이 간단하다고 말하면서 빨리 해달라거나 왜 해주지 않느냐고 물어보시는 일이 없기를 바랍니다.

이유는 상대가 그 일을 해주더라도 부탁하는 사람이 간단한 일을 의뢰한 것이기 때문에 별로 생색내지도 못하고(생색 낼 필요도 없지만)
막상 해보니 어려운 일이라 빨리 처리하지 못하면 간단한 일을 처리도 못하는 사람이 되어버리는 것이니

간단한 일에 대한 부탁은 직접 간단하게 처리하시는 것이 좋습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.