簡體   English   中英

bash中的echo命令行為問題

[英]echo command behaviour issue in bash

command="echo 'hello world' > file.txt";
$command;

我期望它將“ hello world”文本寫入file.txt,但是它將整個字符串打印為:

'hello world' > file.txt

我的代碼有什么錯誤?

替換變量后,僅掃描結果以進行單詞拆分和通配符擴展。 其他特殊的Shell字符(例如引號和重定向)不會被處理。 您需要使用eval對其進行完全重新處理:

eval "$command"

您不能將完整的命令行存儲在變量中並像這樣執行。

使用此功能將有效,但如果命令行來自用戶或來自外部來源, 則很危險

bash -c "$command"

安全的方法是將命令存儲在BASH數組中:

command=(echo 'hello world')

並像這樣執行它:

"${command[@]}" > file.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM