2013-01-09 25 views
-1

給定以下shell腳本,如何重新排列輸出以插入新行?如何重新排列shell腳本的輸出

#!/bin/bash 

echo -e $1 ` date ` 

我試過-e開關,但無濟於事。

我的意思是,如果我輸入:./script.sh " LS -la "我得到以下輸出:

total 4732 drwxr-xr-x 4 root root 4096 2013-01-09 15:32 . drwx------ 28 root root 4096 2013-01-09 15:32 .. -rw-r--r-- 1 root root 484063 2013-01-06 05:22 Blackhat-europe-09-Damele-SQLInjection-whitepaper.pdf -rwxrwxrwx 1 root root 3787587 2013-01-06 05:10 FoxitReader-1.1.0.tar.bz2 -r-------- 1 root root 127693 2013-01-03 22:55 HackYeah-SQL-Injection.pdf drwxr-xr-x 2 root root 4096 2013-01-05 21:47 Inst_DVWA -rw-r--r-- 1 root root 3223 2012-12-22 00:47 nmap-O -rw-r--r-- 1 root root 284 2013-01-06 07:31 payload_dvwa.txt -rwxrwxrwx 1 root root 30 2013-01-09 11:18 script (copy).sh -rwxrwxrwx 1 root root 33 2013-01-09 15:32 script.sh -rw-r--r-- 1 root root 395493 2013-01-06 05:03 SQLmap_README.pdf -rwxrwxrwx 1 root root 705 2013-01-07 15:22 start_dvwa.sh -rw-r--r-- 1 root root 834 2013-01-06 07:31 Unsaved Document 1.txt drwxr-xr-x 2 root root 4096 2012-12-19 18:47 ZAP_certificate Wed Jan 9 15:32:55 CET 2013 

我希望得到類似這樣的輸出:

total 4732 
drwxr-xr-x 4 root root 4096 2013-01-09 15:32 . 
drwx------ 28 root root 4096 2013-01-09 15:32 .. 
-rw-r--r-- 1 root root 484063 2013-01-06 05:22 Blackhat-europe-09-Damele-SQLInjection-whitepaper.pdf 
-rwxrwxrwx 1 root root 3787587 2013-01-06 05:10 FoxitReader-1.1.0.tar.bz2 
-r-------- 1 root root 127693 2013-01-03 22:55 HackYeah-SQL-Injection.pdf 
drwxr-xr-x 2 root root 4096 2013-01-05 21:47 Inst_DVWA 
-rw-r--r-- 1 root root 3223 2012-12-22 00:47 nmap-O 
-rw-r--r-- 1 root root  284 2013-01-06 07:31 payload_dvwa.txt 
-rwxrwxrwx 1 root root  30 2013-01-09 11:18 script (copy).sh 
-rwxrwxrwx 1 root root  33 2013-01-09 15:32 script.sh 
-rw-r--r-- 1 root root 395493 2013-01-06 05:03 SQLmap_README.pdf 
-rwxrwxrwx 1 root root  705 2013-01-07 15:22 start_dvwa.sh 
-rw-r--r-- 1 root root  834 2013-01-06 07:31 Unsaved Document 1.txt 
drwxr-xr-x 2 root root 4096 2012-12-19 18:47 ZAP_certificate 

非常感謝

+0

其中是您的示例輸出中'\'date \''的輸出?你的'bash'腳本是用來處理'ls -la'的,這是你的論點?祝你好運。 – shellter

+0

如果你的腳本看起來像這樣,'./script.sh「ls -la」'的輸出將是'ls -la Wed Jan 9 09:52:22 EST 2013'。我不認爲這就是你想要的,但很難從你的問題確定。向我們展示(a)您的實際腳本,(b)它現在產生的輸出,以及(c)您希望它產生的輸出。並修剪輸出中的行數;你不需要那麼多。 – larsks

+0

您的嘗試重複一個常見的新手反模式:無用的反引號。請參閱http://partmaps.org/era/unix/award.html#backticks – tripleee

回答

0

嘗試

echo -e "`$1`\n`date`" 

引號應該保留換行符。

0

嘗試

#!/bin/bash 
$* 
date 

我不知道怎麼./script "ls -la"超過ls -la; date的改善,但我想你有你的理由。

作爲一個關鍵的可用性改進,我寧願./script ls -la沒有引號,但;只需撥"[email protected]"$*。然後,除其他外,將引用字符串作爲參數傳遞也將起作用。例如,./script perl -le 'print 0x12, "foo"'