2016-04-24 20 views
-1

我已存儲在/tmp/mysqlpwd.txt通行證文件內容Linux命令參數

隨機產生的密碼我想在自動安裝來設置該文件作爲口令的內容。 我想:

sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $(cat /tmp/mysql_passwd.txt)" 

但密碼只是變得$(cat /tmp/mysql_passwd.txt)

我使用$(cat /tmp/mysql_passwd.txt)各地反引號也試過,但密碼增加了反引號。

如何傳遞文件的內容的命令?

+1

我不知道,也許,在這個測試你用不同的報價比你在問題中所用這裏的(正確)雙引號的。 (這是爲什麼包含經過測試的重現器對於一個問題非常重要的一部分!) –

回答

2

這個代碼已經是正確的,因爲寫的(儘管它把標準輸入,而不是爭論的內容,這就是debconf-set-selections預計)。

你可以平凡測試:

echo "hello world" >file 
cat <<<"content follows: $(cat file)" 

...上述存在的輸出:

content follows: hello world 

順便說一下,當你的shell被稱爲是bash,那麼你可以考慮$(<file)作爲更有效的替代$(cat file)

+0

爲什麼'$( sjsam

+0

那麼我怎樣才能將文件的內容傳遞給'debconf-set-selections'呢? – pleasega

+0

@sjsam,'$(貓文件)'是低效的,因爲它產生的子進程,然後在該子過程執行外部'/斌/ cat'命令,從管道讀取其輸出 - 而'$(<文件) '只是讓shell自己直接讀取文件。 –