簡體   English   中英

Bash腳本:將帶空格的命令和arguments存儲在變量中,然后執行

[英]Bash script : Storing command with spaces and arguments in variable and then executing

幾個小時以來我一直在用頭撞牆,所以有時間請專家來。 編寫一個小腳本來在我辦公室的一個系統上運行一些報告,我被要求為它處理一個 Bash 腳本。 名為“auto_rep”的程序采用各種選項,例如“-t”運行一項任務(生成一種類型的報告)和“-1”在完成一項任務后退出。 從命令行運行命令時,選項以空格分隔。 該命令直接從命令行運行,但我無法從腳本運行...

以下是導致我出現問題的代碼片段:

cmd=$(auto_rep -t createfin1report -1)
echo "running ${cmd} command..."
echo
eval $cmd

問題是當我運行腳本時,只運行命令的“auto_rep”部分(來自 $cmd 變量); 基本上在沒有任何選項的情況下運行程序。 它會在沒有命令的“-t createfin1report -1”部分的情況下創建大量報告(哎呀。)。 很高興我只在我們的測試系統上嘗試過。

任何人有任何提示可以幫助我嗎? 我的方法偏離了嗎? 順便說一句 - 曾嘗試將命令存儲在非數組中(cmd =“auto_rep -t createfin1report -1”),這讓我頭疼“找不到命令”錯誤:)......

提前致謝!

將output保存到一個數組中,然后執行這個數組。

declare -a cmd
cmd=( $(auto_rep -t createfin1report -1) )
echo Executing: "${cmd[@]}"
"${cmd[@]}"

請確保 output 是一個有效的命令,並且空格已正確放置在雙引號中。

暫無
暫無

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

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