作者 主題: [問題]請問如何把某一指令的執行結果傳到下一個指令  (閱讀 6683 次)

0 會員 與 1 訪客 正在閱讀本文。

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
各位好:
不知道要放在其它程式討論還是要放在Linux版,最後小弟就放置於肉腳版摟~~
小弟想寫一個轉換的Shell Script,我想做的例如是touch abc.txt 然後會自動把abc.txt 搬到 ./tmp下,小弟的寫法如下:

代碼: [選擇]
1.touch abc.txt | mv ./tmp ==>不過好像少了source所以無法mv
2.touch abc.txt > mv ./tmp ==>邏輯上應該好像也不對
....結論這兩種方式都不行!!
請問各位前輩我該如何寫才能自動產生abc.txt並且搬到./tmp底下?
小弟還有想過另一種方法,就是產生完後再
代碼: [選擇]
mv abc.txt ./tmp,不過這樣的想法好像有點笨?!
« 上次編輯: 2009-05-05 11:47 由 jaymsa »
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

sitediy

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
這很簡單不是嗎??

touch abc.txt && mv abc.txt /tmp

-_-
« 上次編輯: 2009-05-05 12:05 由 sitediy »

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
個人想要更懶的作法....
代碼: [選擇]
touch ./tmp/abc.txt
touch abc.txt ; mv abc.txt ./tmp
衍生
for f in abc.txt ; touch $f ; mv $f ./tmp ; done

« 上次編輯: 2009-05-05 12:51 由 slime »
冷笑話: 我的 IP 是 127.0.0.1

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
謝謝大家~~
小弟寫寫突然卡關,竟然忘記一個重點那就是我可以指定一個變數當作mv 後面接的檔名 :-[

一直卡在說touch abc.txt 出來後我要怎麼抓取 abc.txt這個檔名....XD,因為abc.txt會變!!

slime前輩您說的:

代碼: [選擇]
touch abc.txt ; mv abc.txt ./tmp
衍生
for f in abc.txt ; touch $f ; mv $f ./tmp ; done

for 是否少了do ?小弟好像要加上do才能執行?

Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
代碼: [選擇]
for f in abc.txt ; touch $f ; mv $f ./tmp ; donefor 是否少了do ?小弟好像要加上do才能執行?

您得到它了. (You got it)

P.S. 我上班用 Windows 所以沒有詳細測, 不過您願意理解後自己測, 給您鼓勵一下 :P
冷笑話: 我的 IP 是 127.0.0.1

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17464
    • 檢視個人資料
    • http://www.study-area.org
既然要 mv 到 /tmp
那為甚麼不直接就在 /tmp 下 touch 呢?

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
既然要 mv 到 /tmp
那為甚麼不直接就在 /tmp 下 touch 呢?
恩...前輩
因為我所跑的轉換程式他會產生出檔案,但是是在當前目錄下,我想要分開儲存所以才會請教該怎麼做.
EX:
./a.doc(轉換前) ---> ./b.pdf(轉換後)
但我想變成
./a.doc(轉換前) ---> ./tmp/b.pdf(轉換後)

ps若大家有興趣我可以把我醜陋的程式碼po上

謝謝slime~~您的解答讓我想到想法,雖然不知道正不正確或聰不聰明!! :P
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
因為我所跑的轉換程式他會產生出檔案,但是是在當前目錄下,我想要分開儲存所以才會請教該怎麼做.
EX:
./a.doc(轉換前) ---> ./b.pdf(轉換後)
但我想變成
./a.doc(轉換前) ---> ./tmp/b.pdf(轉換後)

以個人習慣, 會考慮兩種原則:

1. 完全不控制目錄, 由使用者及 shell 處理, 例如:
program -i /tmp/1.doc -o ~/Documents/a.pdf
適合來源及目的都在本機, 一次只處理單一檔案等情況. (多檔案則由 shell 或其他程式處理.)

2. 指定來源及目的路徑, 例如:
program -sourcedir /tmp -destdir /tmp -type doc2pdf *
適合同一目錄下有大量檔案.
冷笑話: 我的 IP 是 127.0.0.1

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
您好:
不過該轉換軟體好像只會產生檔案至當前目錄下耶?!
所以我才想這樣用!!
還是各位前輩有更好的方式可以將doc轉成pdf或odt之類的?!
之前還看過有線上轉檔的方式,小弟也希望可以這樣做不知前有沒有前輩知道?(聽說利用openoffice就可以)
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

thyme

  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 1281
    • 檢視個人資料
您好:
不過該轉換軟體好像只會產生檔案至當前目錄下耶?!
所以我才想這樣用!!
還是各位前輩有更好的方式可以將doc轉成pdf或odt之類的?!
之前還看過有線上轉檔的方式,小弟也希望可以這樣做不知前有沒有前輩知道?(聽說利用openoffice就可以)

cd /tmp
program /xxx/yyy/abc.doc abc.pdf

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
您好:
不過該轉換軟體好像只會產生檔案至當前目錄下耶?!
所以我才想這樣用!!
還是各位前輩有更好的方式可以將doc轉成pdf或odt之類的?!
之前還看過有線上轉檔的方式,小弟也希望可以這樣做不知前有沒有前輩知道?(聽說利用openoffice就可以)

cd /tmp
program /xxx/yyy/abc.doc abc.pdf
對齁....
這好像也是個辦法....
不過我寫了
代碼: [選擇]
ORIGIFILELIST=`cut -c3- ../doc.txt |head -n $i | tail -n +$i`
CDFILELIST="../$ORIGIFILELIST"
` unoconv -f pdf "$CDFILELIST" `
轉出來還在上層目錄XD
不知是小弟寫錯還是本來這程式就這樣跑?!
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17464
    • 檢視個人資料
    • http://www.study-area.org
恩,那就用相同的變數名來處理吧。