2017-10-12 96 views
0

我有一個bash腳本與下面的代碼:bash腳本保存價值,而無需創建臨時文件

#!/bin/bash 
cat chars.txt | sed 's/.*\(...\)/\1/' > lastchars.txt 
aws ses send-email --from Email --destination Email --message file://lastchars.txt 
rm lastchars.txt 

和我的想法是要找到一個解決方案,以相同的功能,但不會產生臨時文件。我聽說過並閱讀了關於STDIN,STDOUT,STDERR,但不知道這是否會幫助我,也許有人有想法如何解決這個問題?

回答

3

在簡單的方法:

aws ses send-email --from Email --destination Email --message "$(sed 's/.*\(...\)/\1/' chars.txt)" 
+0

你們,我知道,但它只是一個簡單的示例,我有一個最大的含有人需要在存儲器中存儲不上的臨時文件。 – Andrej

+2

@Andrej然後擴展你的問題並描述這些條件。 – RomanPerekhrest

2

如果標準輸入未使用的命令,然後「文件」 /dev/stdin可用於:

cat chars.txt | sed 's/.*\(...\)/\1/' | aws ses send-email --from Email --destination Email --message file:///dev/stdin 

否則<()將創建一個管道,並返回名稱

aws ses send-email --from Email --destination Email --message file://<(cat chars.txt | sed 's/.*\(...\)/\1/') 

在文件系統上這兩個選項l OOK是這樣的:

ls -l /dev/stdin <(echo) 

lrwxrwxrwx 1 user user 15 Jun 26 2015 /dev/stdin -> /proc/self/fd/0 
prw------- 1 user user 0 Oct 12 16:01 /tmp/zshuOs5sV