[英]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.