iT邦幫忙

0

【已解決】Linux 如何獲取串接命令的輸出字串

想要利用 echo 拼接日期字串

期望輸入

echo 日期 +  | echo <關鍵字>

期望輸出 : test

嘗試1 : 我測試 $? 是獲取返回值 0

echo 'test' | echo $?
0

更新

上面例子舉得太爛,我想要能隨意組合字串給下一個流程命令使用

期望例子 : 輸出日期格式給 touch 創建檔案

echo 日期 + '.txt' | touch 前一個流程值

假設今天是 2020/10/21 10:05:01 會創建 20201021100501.txt 檔案


嘗試2 :
我查看shell - How to concatenate string variables in Bash - Stack Overflow 這篇
發現字串拼接方式,但還是不知道如何跟日期拼接

test@test:~$ a='test';a+=date;echo $a
testdate

date被當成字串,而不是變數...

嘗試3 : Append Current Date To Filename in Bash Shell - nixCraft

name=$(date +"%Y%m%d%H%M%S");name+='.txt';touch $name
test@test:~$ name=$(date +"%Y%m%d%H%M%S");name+='.txt';touch $name
test@test:~$ ls
20201021020713.txt

結果 : 解決了,真開心~
小遺憾 : 無法直接一段命令解決...

test@test:~$ touch $(date +"%Y%m%d%H%M%S") + '.txt'
test@test:~$ ls
+  20201021020713
看更多先前的討論...收起先前的討論...
slime iT邦大師 1 級 ‧ 2020-10-21 10:00:56 檢舉
先看看: date [+format] 或 ts 是否合用?

可以參考: "linux date as filename"
感謝您!
slime iT邦大師 1 級 ‧ 2020-10-21 11:37:39 檢舉
可以再參考: "single backtick" linux pipe
"single backtick"是反引號, 通常在鍵盤 Tab 往上一格, 英文區的數字 1 左邊一格.
好用,slime大神,太感謝了!

2 個回答

3
wolfwang
iT邦新手 3 級 ‧ 2020-10-21 12:24:02
最佳解答

一行的版本

date +"%Y%m%d%H%M%S" | xargs -I % touch %.txt
wolfwang iT邦新手 3 級 ‧ 2020-10-21 12:27:02 檢舉

稍微解釋一下,xargs 的 參數 -I (大寫的 i)作用是將前一段的結果存入變數 % ,然後再將變數拿去給 touch 使用,將變數的數字和 .txt 組出檔名

感謝您

2
raytracy
iT邦大神 1 級 ‧ 2020-10-21 09:46:19
echo 'test' | cat

不知道你想做甚麼? 不過這樣也是符合你的描述...

您好,我重新更新了

我要發表回答

立即登入回答